using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.Options; using MongoDB.Driver; using SharpCompress.Common; using UGQDatabase.Models; using UGQDataAccess.Settings; using ServerCommon.UGQ; using ServerCommon; namespace UGQDataAccess.Repository; public class QuestCompletedRepository : BaseRepository { private const string CollectionName = "QuestCompleted"; public QuestCompletedRepository(IMongoClient mongoClient, IOptions settings) : base(mongoClient, settings.Value.DatabaseName, CollectionName) { } public async Task> getAll() { return await Collection.Find(Builders.Filter.Empty).ToListAsync(); } public async Task insert(long questId, long revision, string author, string userGuid) { var entity = new QuestCompletedEntity { QuestId = questId, Revision = revision, Author = author, UserGuid = userGuid, CreatedAt = DateTime.UtcNow, }; await Collection.InsertOneAsync(entity); return ServerErrorCode.Success; } public async Task setAuthor(string id, string author) { var filterBuilder = Builders.Filter; var filter = filterBuilder.Eq(x => x.Id, id); var update = Builders.Update .Set(x => x.Author, author); var options = new FindOneAndUpdateOptions { ReturnDocument = ReturnDocument.After, }; return await Collection.FindOneAndUpdateAsync(filter, update, options); } public async Task getCount(string author) { var builder = Builders.Filter; var filter = builder.Eq(x => x.Author, author); var result = await Collection.Find(filter).CountDocumentsAsync(); return result; } }