using System; using System.Collections.Generic; using System.Threading.Tasks; using MongoDB.Bson; using MongoDB.Driver; using Plugin.MongoLogs.Utils; namespace Plugin.MongoLogs.Services { public class MongoLogsService { private readonly IMongoDatabase _database; public MongoLogsService(MongoLogsConfiguration mongoLogsConfiguration) { var client = new MongoClient(mongoLogsConfiguration.ToString()); _database = client.GetDatabase(mongoLogsConfiguration.DbName); } public async Task> GetLogsAsync(string collectionName, long characterId, DateTime minDate, DateTime maxDate, int? limit = null, int? skip = null) { FilterDefinition characterFilter = Builders.Filter.Eq("CharacterId", characterId); FilterDefinition minDateFilter = Builders.Filter.Gte("CreatedAt", minDate); FilterDefinition maxDateFilter = Builders.Filter.Lte("CreatedAt", maxDate); SortDefinition sortByDate = Builders.Sort.Descending("CreatedAt"); var findOptions = new FindOptions { Limit = limit, Skip = skip, Sort = sortByDate }; IMongoCollection collection = _database.GetCollection(collectionName); return await (await collection.FindAsync(characterFilter & minDateFilter & maxDateFilter, findOptions)).ToListAsync(); } } }