초기커밋
This commit is contained in:
51
UGQDataAccess/Repository/Query/ReserveAccountGradeQuery.cs
Normal file
51
UGQDataAccess/Repository/Query/ReserveAccountGradeQuery.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Driver;
|
||||
using System.Linq.Expressions;
|
||||
using UGQDataAccess.Repository.Models;
|
||||
using UGQDatabase.Models;
|
||||
|
||||
|
||||
public static class ReserveAccountGradeQuery
|
||||
{
|
||||
|
||||
public class AllReserveAccountGradeQueryJoin : ReserveAccountGradeEntity
|
||||
{
|
||||
public IEnumerable<AccountEntity> Accounts { get; set; } = null!;
|
||||
}
|
||||
|
||||
|
||||
public static Expression<Func<AllReserveAccountGradeQueryJoin, ReserveAccountGradeItemResult>> ReserveAccountGradeItemResultProjection =
|
||||
x => new ReserveAccountGradeItemResult
|
||||
{
|
||||
ReserveId = x.Id.ToString(),
|
||||
UserGuid = x.UserGuid,
|
||||
CurrentGradeType = x.BeforeGradeType,
|
||||
AccountId = x.Accounts.First().AccountId ?? string.Empty,
|
||||
ReserveGradeType = x.ReserveGradeType,
|
||||
ReserveTime = x.ReserveTime,
|
||||
UpdatedAt = x.UpdatedAt,
|
||||
IsCompleted = x.IsCompleted,
|
||||
};
|
||||
|
||||
public static PipelineDefinition<ReserveAccountGradeEntity, T> allReserveAccountGradePipeline<T>(
|
||||
FilterDefinition<ReserveAccountGradeEntity> filter,
|
||||
Expression<Func<AllReserveAccountGradeQueryJoin, T>> projection)
|
||||
{
|
||||
var lookupStage1 = new BsonDocument("$lookup",
|
||||
new BsonDocument
|
||||
{
|
||||
{ "from", "Account" },
|
||||
{ "localField", "UserGuid" },
|
||||
{ "foreignField", "UserGuid" },
|
||||
{ "as", "Accounts" }
|
||||
});
|
||||
|
||||
var pipeline = new EmptyPipelineDefinition<ReserveAccountGradeEntity>()
|
||||
.Match(filter)
|
||||
.AppendStage<ReserveAccountGradeEntity, ReserveAccountGradeEntity, AllReserveAccountGradeQueryJoin>(lookupStage1)
|
||||
.Project(projection);
|
||||
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user