-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDataAccess.cs
107 lines (83 loc) · 3.14 KB
/
DataAccess.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MongoCrud
{
public class DataAccess
{
public IMongoDatabase db { get; set; }
private string database;
public DataAccess(IDatabaseSettings databaseSettings)
{
MongoClient client;
if (String.IsNullOrEmpty(databaseSettings.ConnectionString))
{
//empty conntection for localhost
client = new MongoClient();
}
else
{
//live atlas config
client = new MongoClient(databaseSettings.ConnectionString);
}
db = client.GetDatabase(databaseSettings.DatabaseName);
}
public async Task CreateAsync<T>(string table, T record)
{
var collection = db.GetCollection<T>(table);
await collection.InsertOneAsync(record);
}
public void Create<T>(string table, T record)
{
var collection = db.GetCollection<T>(table);
collection.InsertOne(record);
}
public List<T> Read<T>(string table)
{
var collection = db.GetCollection<T>(table);
return collection.Find(new BsonDocument()).ToList();
}
public IMongoCollection<T> GetCollection<T>(string table)
{
return db.GetCollection<T>(table);
}
public T ReadById<T>(string table, string id)
{
var collection = db.GetCollection<T>(table);
var filter = Builders<T>.Filter.Eq("Id", id);
return collection.Find(filter).First();
}
public T ReadByProperty<T>(string table, string propertyName, string value)
{
var collection = db.GetCollection<T>(table);
var filter = Builders<T>.Filter.Eq(propertyName, value);
return collection.Find(filter).First();
}
public void Upsert<T>(string table, string id, T record)
{
var collection = db.GetCollection<T>(table);
ReplaceOptions replaceOptions = new ReplaceOptions { IsUpsert = true };
var filter = Builders<T>.Filter.Eq("Id", id);
var result = collection.ReplaceOne(filter,
record,
replaceOptions);
}
//public void Upsert<T>(string table, string propertyName, string propertyValue, T record)
//{
// var collection = db.GetCollection<T>(table);
// UpdateOptions replaceOptions = new UpdateOptions { IsUpsert = true };
// var filter = Builders<T>.Filter.Eq(propertyName, propertyValue);
// var result = collection.UpdateOne(filter,
// record,
// replaceOptions);
//}
//comment
public void Delete<T>(string table, string id, T record) {
var collection = db.GetCollection<T>(table);
var filter = Builders<T>.Filter.Eq("Id", id);
collection.DeleteOne(filter);
}
}
}