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 GetCollection(string collectionName) { if (!_initialized) throw new Exception(string.Concat(nameof(MongoDbContext), " has not initialized yet")); return database.GetCollection(collectionName); } public IMongoCollection Genres => GetCollection(nameof(Genre)); public IMongoCollection Languages => GetCollection(nameof(Language)); public IMongoCollection MediaInfos => GetCollection(nameof(MediaInfo)); private const string _mediaContentItemsCollectionName = "MediaContentItems"; public IMongoCollection AnimeTitles => GetCollection(_mediaContentItemsCollectionName); public void Initialize() { /* BsonClassMap.RegisterClassMap(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 GetNextPaymentProviderId() => _paymentProviderIdSequence.GetNextSequenceValue(context); }