From 4abe10eecfac153380be370afd676325cbe0da54 Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Sun, 16 Jul 2023 19:06:45 +0800 Subject: [PATCH] IDataBase Last IDataBase Last --- .../DotNet/Core/DataBase/Base/IDateBase.cs | 1 + .../DotNet/Core/DataBase/MongoDataBase.cs | 12 ++++++++++++ .../UserHandler/H_C2G_RegisterRequestHandler.cs | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Assets/GameScripts/DotNet/Core/DataBase/Base/IDateBase.cs b/Assets/GameScripts/DotNet/Core/DataBase/Base/IDateBase.cs index 986ca79e..d56099ac 100644 --- a/Assets/GameScripts/DotNet/Core/DataBase/Base/IDateBase.cs +++ b/Assets/GameScripts/DotNet/Core/DataBase/Base/IDateBase.cs @@ -19,6 +19,7 @@ public interface IDateBase FTask> QueryByPageOrderBy(Expression> filter, int pageIndex, int pageSize, Expression> orderByExpression, bool isAsc = true, string collection = null) where T : Entity; FTask First(Expression> filter, string collection = null) where T : Entity; FTask First(string json, string[] cols, string collection = null) where T : Entity; + FTask Last(Expression> filter, string collection = null) where T : Entity; FTask> QueryOrderBy(Expression> filter, Expression> orderByExpression, bool isAsc = true, string collection = null) where T : Entity; FTask> Query(Expression> filter, string collection = null) where T : Entity; FTask Query(long id, List collectionNames, List result); diff --git a/Assets/GameScripts/DotNet/Core/DataBase/MongoDataBase.cs b/Assets/GameScripts/DotNet/Core/DataBase/MongoDataBase.cs index 5ddab076..b63f1a32 100644 --- a/Assets/GameScripts/DotNet/Core/DataBase/MongoDataBase.cs +++ b/Assets/GameScripts/DotNet/Core/DataBase/MongoDataBase.cs @@ -190,6 +190,18 @@ public sealed class MongoDataBase : IDateBase return await cursor.FirstOrDefaultAsync(); } } + + public async FTask Last(Expression> filter, string collection = null) where T : Entity + { + using (await _mongoDataBaseLock.Lock(RandomHelper.RandInt64())) + { + var cursor = await GetCollection(collection).FindAsync(filter); + + var list = await cursor.ToListAsync(); + + return list.LastOrDefault(); + } + } public async FTask> QueryOrderBy(Expression> filter, Expression> orderByExpression, bool isAsc = true, string collection = null) where T : Entity { diff --git a/DotNet/Logic/src/Handler/UserHandler/H_C2G_RegisterRequestHandler.cs b/DotNet/Logic/src/Handler/UserHandler/H_C2G_RegisterRequestHandler.cs index c8748487..e572c285 100644 --- a/DotNet/Logic/src/Handler/UserHandler/H_C2G_RegisterRequestHandler.cs +++ b/DotNet/Logic/src/Handler/UserHandler/H_C2G_RegisterRequestHandler.cs @@ -39,7 +39,7 @@ namespace TEngine.Logic public async FTask GeneratorUID(IDateBase db) { - var ret = await db.First(t=>t.UID != 0); + var ret = await db.Last(t=>t.UID != 0); if (ret == null) { return 100000;