module DegenzGame.DbService open DegenzGame.Shared open DegenzGame.Shared open MongoDB.Bson open MongoDB.Driver type PlayerEntry = { Id : BsonObjectId Player : Player } let mongo = MongoClient("mongodb://localhost:27017") let db = mongo.GetDatabase("degenz-game") let players = db.GetCollection("players") let tryFindPlayer (id : uint64) : Async = async { let filter = Builders.Filter.Eq((fun p -> p.Player.DiscordId), id) let! player = players.FindAsync(filter) |> Async.AwaitTask return match player.ToEnumerable() |> Seq.toList with | [] -> None | entry::_ -> Some entry.Player } let insertNewPlayer (player : Player) = async { do! { Id = BsonObjectId(ObjectId.GenerateNewId()) ; Player = player } |> players.InsertOneAsync |> Async.AwaitTask } let removePlayer (memberId : uint64) = async { // TODO: Check the result of this delete operation return! players.DeleteOneAsync (fun p -> p.Player.DiscordId = memberId) |> Async.AwaitTask |> Async.Ignore }