46 lines
1.8 KiB
C#
46 lines
1.8 KiB
C#
using Modules.Library.Database.Database.Models;
|
|
using Modules.Library.Database.Database.Models.Anime;
|
|
using Modules.Library.Database.Database.Models.Genre;
|
|
using Modules.Library.Database.Database.Models.Language;
|
|
using MongoDB.Bson.Serialization;
|
|
using MongoDB.Bson.Serialization.IdGenerators;
|
|
using MongoDB.Driver;
|
|
|
|
namespace Modules.Library.Database.Database;
|
|
|
|
public class MongoDbContext(IMongoDatabase database)
|
|
{
|
|
private bool _initialized;
|
|
public IMongoCollection<TDocument> GetCollection<TDocument>(string collectionName)
|
|
{
|
|
if (!_initialized) throw new Exception(string.Concat(nameof(MongoDbContext), " has not initialized yet"));
|
|
return database.GetCollection<TDocument>(collectionName);
|
|
}
|
|
|
|
public IMongoCollection<Genre> Genres => GetCollection<Genre>(nameof(Genre));
|
|
public IMongoCollection<Language> Languages => GetCollection<Language>(nameof(Language));
|
|
public IMongoCollection<MediaInfo> MediaInfos => GetCollection<MediaInfo>(nameof(MediaInfo));
|
|
|
|
private const string _mediaContentItemsCollectionName = "MediaContentItems";
|
|
public IMongoCollection<AnimeTitle> AnimeTitles => GetCollection<AnimeTitle>(_mediaContentItemsCollectionName);
|
|
|
|
public void Initialize()
|
|
{
|
|
/*
|
|
BsonClassMap.RegisterClassMap<AnimeTitle>(q =>
|
|
{
|
|
q.AutoMap();
|
|
q.MapIdMember(c => c.Id).SetIdGenerator(CombGuidGenerator.Instance);
|
|
//q.MapCreator(q => AnimeTitleBuilder.FromAnimeTitle(q).Build());
|
|
//q.MapIdMember(c => c.Id).SetIdGenerator(StringObjectIdGenerator.Instance);
|
|
});
|
|
*/
|
|
_initialized = true;
|
|
}
|
|
|
|
|
|
//private IntSequence _paymentProviderIdSequence = new("PaymentProviderId");
|
|
|
|
//public Task<int> GetNextPaymentProviderId() => _paymentProviderIdSequence.GetNextSequenceValue(context);
|
|
}
|