62 lines
2.5 KiB
C#
62 lines
2.5 KiB
C#
using MongoDB.Driver;
|
|
using YandexGameServer.Models;
|
|
using Tag = YandexGameServer.Models.Tag;
|
|
|
|
namespace YandexGameServer.Services
|
|
{
|
|
public class DatabaseService
|
|
{
|
|
private readonly string _connectionString;
|
|
private readonly string _databaseName;
|
|
|
|
private readonly IMongoCollection<Client> _clientsCollection;
|
|
private readonly IMongoCollection<Tag> _tagsCollection;
|
|
private readonly IMongoCollection<CityUniqueCode> _citiesCollection;
|
|
|
|
public DatabaseService(IConfiguration configuration)
|
|
{
|
|
var databaseSection = configuration.GetSection("Database");
|
|
_connectionString = databaseSection["ConnectionString"];
|
|
_databaseName = databaseSection["DatabaseName"];
|
|
|
|
var mongoClient = new MongoClient(_connectionString);
|
|
var database = mongoClient.GetDatabase(_databaseName);
|
|
|
|
_clientsCollection = database.GetCollection<Client>("clients");
|
|
_tagsCollection = database.GetCollection<Tag>("tags");
|
|
_citiesCollection = database.GetCollection<CityUniqueCode>("cities-codes");
|
|
}
|
|
|
|
public async Task CreateAsync<T>(T data)
|
|
{
|
|
if (data is Client) await _clientsCollection.InsertOneAsync(data as Client);
|
|
else if (data is Tag) await _tagsCollection.InsertOneAsync(data as Tag);
|
|
else if (data is CityUniqueCode) await _citiesCollection.InsertOneAsync(data as CityUniqueCode);
|
|
|
|
else throw new NullReferenceException();
|
|
}
|
|
|
|
public async Task<List<Client>?> GetClientsAsync() => await _clientsCollection.Find(_ => true).ToListAsync();
|
|
public async Task<List<Tag>?> GetTagsAsync() => await _tagsCollection.Find(_ => true).ToListAsync();
|
|
public async Task<List<CityUniqueCode>?> GetCitiesCodesAsync() => await _citiesCollection.Find(_ => true).ToListAsync();
|
|
|
|
public async Task UpdateAsync<T>(T data)
|
|
{
|
|
if (data is Client)
|
|
{
|
|
Client client = data as Client;
|
|
_clientsCollection.ReplaceOne(x => x.id == client.id, client);
|
|
}
|
|
else if (data is Tag)
|
|
{
|
|
Tag tag = data as Tag;
|
|
_tagsCollection.ReplaceOne(x => x.id == tag.id, tag);
|
|
}
|
|
else if (data is CityUniqueCode)
|
|
{
|
|
CityUniqueCode cityCode = data as CityUniqueCode;
|
|
_citiesCollection.ReplaceOne(x => x.id == cityCode.id, cityCode);
|
|
}
|
|
}
|
|
}
|
|
} |