server-master/srcs/_plugins/Plugin.MongoLogs/Services/MongoLogsService.cs
2026-02-10 18:21:30 +01:00

36 lines
No EOL
1.6 KiB
C#

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<List<BsonDocument>> GetLogsAsync(string collectionName, long characterId, DateTime minDate, DateTime maxDate, int? limit = null, int? skip = null)
{
FilterDefinition<BsonDocument> characterFilter = Builders<BsonDocument>.Filter.Eq("CharacterId", characterId);
FilterDefinition<BsonDocument> minDateFilter = Builders<BsonDocument>.Filter.Gte("CreatedAt", minDate);
FilterDefinition<BsonDocument> maxDateFilter = Builders<BsonDocument>.Filter.Lte("CreatedAt", maxDate);
SortDefinition<BsonDocument> sortByDate = Builders<BsonDocument>.Sort.Descending("CreatedAt");
var findOptions = new FindOptions<BsonDocument>
{
Limit = limit,
Skip = skip,
Sort = sortByDate
};
IMongoCollection<BsonDocument> collection = _database.GetCollection<BsonDocument>(collectionName);
return await (await collection.FindAsync(characterFilter & minDateFilter & maxDateFilter, findOptions)).ToListAsync();
}
}
}