Functional MongoDB CRUD

This commit is contained in:
2020-07-01 19:01:55 +01:00
parent 3871bcd162
commit 46eb41d76d
2 changed files with 48 additions and 6 deletions
+39 -4
View File
@@ -1,11 +1,14 @@
using FireLance.Interfaces; using FireLance.Interfaces;
using MongoDB.Bson;
using MongoDB.Driver; using MongoDB.Driver;
using System;
using System.Collections.Generic;
namespace FireLance namespace FireLance
{ {
public class DatabaseConnection : IDatabaseConnection public class DatabaseConnection : IDatabaseConnection
{ {
IMongoDatabase mongoDatabase; IMongoDatabase db;
public void CloseCurrentConnection() public void CloseCurrentConnection()
{ {
@@ -16,7 +19,7 @@ namespace FireLance
{ {
int connectionCnt = 0; int connectionCnt = 0;
try { connectionCnt = mongoDatabase.Client.ListDatabases().ToList().Count; } try { connectionCnt = db.Client.ListDatabases().ToList().Count; }
catch {} catch {}
return (connectionCnt > 0) ? true : false; return (connectionCnt > 0) ? true : false;
@@ -25,13 +28,45 @@ namespace FireLance
public void OpenConnection(string dbLocation, int port) public void OpenConnection(string dbLocation, int port)
{ {
var client = new MongoClient($"mongodb://{dbLocation}:{port}"); var client = new MongoClient($"mongodb://{dbLocation}:{port}");
mongoDatabase = client.GetDatabase(dbLocation); var settings = new MongoDatabaseSettings { GuidRepresentation = GuidRepresentation.Standard };
db = client.GetDatabase(dbLocation, settings);
} }
public void InsertRecord<T>(string table, T record) public void InsertRecord<T>(string table, T record)
{ {
var collection = mongoDatabase.GetCollection<T>(table); var collection = db.GetCollection<T>(table);
collection.InsertOne(record); collection.InsertOne(record);
} }
public void UpsertRecord<T>(string table, Guid id, T record)
{
var collection = db.GetCollection<T>(table);
collection.ReplaceOne(
new BsonDocument("_id", id),
record,
new ReplaceOptions { IsUpsert = true });
}
public List<T> LoadRecords<T>(string table)
{
var collection = db.GetCollection<T>(table);
return collection.Find(new BsonDocument()).ToList();
}
public T LoadRecordById<T>(string table, Guid id)
{
var collection = db.GetCollection<T>(table);
var filter = Builders<T>.Filter.Eq("Id", id);
return collection.Find(filter).First();
}
public void DeleteRecordById<T>(string table, Guid id)
{
var collection = db.GetCollection<T>(table);
var filter = Builders<T>.Filter.Eq("Id", id);
collection.DeleteOne(filter);
}
} }
} }
+9 -2
View File
@@ -1,9 +1,15 @@
using System; using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using System;
using System.Collections.Generic;
namespace FireLance.Model namespace FireLance.Models
{ {
public class SaveDataModel public class SaveDataModel
{ {
[BsonId]
public Guid Id { get; set; }
public int GameID { get; set; } public int GameID { get; set; }
public string SHA256Hash { get; set; } public string SHA256Hash { get; set; }
public string Description { get; set; } public string Description { get; set; }
@@ -12,3 +18,4 @@ namespace FireLance.Model
public uint BackupSize { get; set; } public uint BackupSize { get; set; }
} }
} }