초기커밋
This commit is contained in:
57
UGQDataAccess/Repository/QuestIdSequenceRepository.cs
Normal file
57
UGQDataAccess/Repository/QuestIdSequenceRepository.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MongoDB.Driver;
|
||||
using UGQDatabase.Models;
|
||||
using UGQDataAccess.Settings;
|
||||
using ServerCommon.UGQ;
|
||||
|
||||
namespace UGQDataAccess.Repository
|
||||
{
|
||||
public class QuestIdSequenceRepository : BaseRepository<QuestIdSequenceEntity>
|
||||
{
|
||||
private const string CollectionName = "QuestIdSequence";
|
||||
|
||||
public QuestIdSequenceRepository(IMongoClient mongoClient, IOptions<UGQDatabaseSettings> settings) :
|
||||
base(mongoClient, settings.Value.DatabaseName, CollectionName)
|
||||
{
|
||||
}
|
||||
|
||||
public async Task init()
|
||||
{
|
||||
var found = await Collection.FindAsync(x => x.Id == "QuestId");
|
||||
if(found.FirstOrDefault() == null)
|
||||
{
|
||||
QuestIdSequenceEntity entity = new ()
|
||||
{
|
||||
Id = "QuestId",
|
||||
Sequence = 0,
|
||||
UpdatedAt = DateTime.UtcNow,
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
};
|
||||
|
||||
await Collection.InsertOneAsync(entity);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<long> getNextSequence()
|
||||
{
|
||||
var filter = Builders<QuestIdSequenceEntity>.Filter.Eq(x => x.Id, "QuestId");
|
||||
var update = Builders<QuestIdSequenceEntity>.Update
|
||||
.Inc(x => x.Sequence, 1)
|
||||
.Set(x => x.UpdatedAt, DateTime.UtcNow);
|
||||
|
||||
var options = new FindOneAndUpdateOptions<QuestIdSequenceEntity>()
|
||||
{
|
||||
ReturnDocument = ReturnDocument.After
|
||||
};
|
||||
|
||||
var result = await Collection.FindOneAndUpdateAsync(filter, update, options);
|
||||
|
||||
return result.Sequence;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user