MyBookmark/Modules.Library.Database/Database/MongoDbContext.cs
2024-09-23 03:00:50 +03:00

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);
}