From 1158f41318cba63f2acba4b2ef0a624adf47e013 Mon Sep 17 00:00:00 2001 From: ArdenHide Date: Fri, 8 Aug 2025 13:14:30 +0300 Subject: [PATCH 1/5] AdminCreatePoolzBackId: Need to save token info --- .../AdminCreatePoolzBackIdHandler.cs | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/InvestProvider.Backend/Services/Handlers/AdminCreatePoolzBackId/AdminCreatePoolzBackIdHandler.cs b/src/InvestProvider.Backend/Services/Handlers/AdminCreatePoolzBackId/AdminCreatePoolzBackIdHandler.cs index 7f0fd55..7ff6fbf 100644 --- a/src/InvestProvider.Backend/Services/Handlers/AdminCreatePoolzBackId/AdminCreatePoolzBackIdHandler.cs +++ b/src/InvestProvider.Backend/Services/Handlers/AdminCreatePoolzBackId/AdminCreatePoolzBackIdHandler.cs @@ -1,14 +1,32 @@ using MediatR; +using Net.Cache.DynamoDb.ERC20; using Amazon.DynamoDBv2.DataModel; +using Net.Cache.DynamoDb.ERC20.Models; +using InvestProvider.Backend.Services.Strapi; +using poolz.finance.csharp.contracts.LockDealNFT; +using InvestProvider.Backend.Services.Web3.Contracts; using InvestProvider.Backend.Services.Handlers.AdminCreatePoolzBackId.Models; namespace InvestProvider.Backend.Services.Handlers.AdminCreatePoolzBackId; -public class AdminCreatePoolzBackIdHandler(IDynamoDBContext dynamoDb) +public class AdminCreatePoolzBackIdHandler( + IDynamoDBContext dynamoDb, + ILockDealNFTService lockDealNFT, + IStrapiClient strapi, + ERC20CacheProvider erc20Cache +) : IRequestHandler { public async Task Handle(AdminCreatePoolzBackIdRequest request, CancellationToken cancellationToken) { + var token = await lockDealNFT + .TokenOfQueryAsync(request.ChainId, ContractType.LockDealNFT, request.PoolzBackId) + .ConfigureAwait(false); + + var onChainInfo = await strapi.ReceiveOnChainInfoAsync(request.ChainId); + + _ = erc20Cache.GetOrAdd(new GetCacheRequest(request.ChainId, token, onChainInfo.RpcUrl)); + await dynamoDb.SaveAsync(request, cancellationToken); return new AdminCreatePoolzBackIdResponse(request); From 218e002cab84f21f5ad6db353ba7f831cae1e873 Mon Sep 17 00:00:00 2001 From: ArdenHide Date: Fri, 8 Aug 2025 13:35:17 +0300 Subject: [PATCH 2/5] - update tests --- .../AdminCreatePoolzBackIdHandlerTests.cs | 39 +++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/tests/InvestProvider.Backend.Tests/Handlers/AdminCreatePoolzBackIdHandlerTests.cs b/tests/InvestProvider.Backend.Tests/Handlers/AdminCreatePoolzBackIdHandlerTests.cs index e2aadad..b88afc2 100644 --- a/tests/InvestProvider.Backend.Tests/Handlers/AdminCreatePoolzBackIdHandlerTests.cs +++ b/tests/InvestProvider.Backend.Tests/Handlers/AdminCreatePoolzBackIdHandlerTests.cs @@ -1,11 +1,20 @@ -using System.Threading; -using System.Threading.Tasks; using Moq; using Xunit; +using System; +using System.Numerics; +using System.Threading; +using System.Threading.Tasks; +using Nethereum.RPC.Eth.DTOs; +using Net.Web3.EthereumWallet; +using Net.Cache.DynamoDb.ERC20; using Amazon.DynamoDBv2.DataModel; +using Net.Cache.DynamoDb.ERC20.Models; +using InvestProvider.Backend.Services.Strapi; +using poolz.finance.csharp.contracts.LockDealNFT; +using InvestProvider.Backend.Services.Strapi.Models; +using InvestProvider.Backend.Services.Web3.Contracts; using InvestProvider.Backend.Services.Handlers.AdminCreatePoolzBackId; using InvestProvider.Backend.Services.Handlers.AdminCreatePoolzBackId.Models; -using InvestProvider.Backend.Tests; namespace InvestProvider.Backend.Tests.Handlers; @@ -14,10 +23,32 @@ public class AdminCreatePoolzBackIdHandlerTests [Fact] public async Task Handle_SavesItem_AndReturnsResponse() { + Environment.SetEnvironmentVariable("AWS_REGION", "us-east-1"); + var phase = TestHelpers.CreatePhase("1", System.DateTime.UtcNow, System.DateTime.UtcNow.AddHours(1), 0m); var projectInfo = TestHelpers.CreateProjectInfo(1, phase); var dynamoDb = new Mock(); - var handler = new AdminCreatePoolzBackIdHandler(dynamoDb.Object); + var lockDealNFT = new Mock>(); + lockDealNFT.Setup(x => x.TokenOfQueryAsync(It.IsAny(), ContractType.LockDealNFT, It.IsAny(), It.IsAny())) + .ReturnsAsync(new EthereumAddress("0x00000000000000000000000000000000000000aa")); + + var strapi = new Mock(); + strapi.Setup(x => x.ReceiveOnChainInfoAsync(1)) + .ReturnsAsync(new OnChainInfo( + "http://rpc", + new EthereumAddress("0x00000000000000000000000000000000000000bb"), + new EthereumAddress("0x00000000000000000000000000000000000000cc") + )); + + var erc20 = new Mock(); + erc20.Setup(x => x.GetOrAdd(It.IsAny())) + .Returns(new ERC20DynamoDbTable()); + + var handler = new AdminCreatePoolzBackIdHandler( + dynamoDb.Object, + lockDealNFT.Object, + strapi.Object, + erc20.Object); var request = new AdminCreatePoolzBackIdRequest { ProjectId = "pid", From 98d93413ef46ef24626f11e8fce5d218c67f8182 Mon Sep 17 00:00:00 2001 From: ArdenHide Date: Fri, 8 Aug 2025 13:50:36 +0300 Subject: [PATCH 3/5] - cleanup --- .../Handlers/AdminCreatePoolzBackIdHandlerTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/InvestProvider.Backend.Tests/Handlers/AdminCreatePoolzBackIdHandlerTests.cs b/tests/InvestProvider.Backend.Tests/Handlers/AdminCreatePoolzBackIdHandlerTests.cs index b88afc2..2b609cd 100644 --- a/tests/InvestProvider.Backend.Tests/Handlers/AdminCreatePoolzBackIdHandlerTests.cs +++ b/tests/InvestProvider.Backend.Tests/Handlers/AdminCreatePoolzBackIdHandlerTests.cs @@ -25,7 +25,7 @@ public async Task Handle_SavesItem_AndReturnsResponse() { Environment.SetEnvironmentVariable("AWS_REGION", "us-east-1"); - var phase = TestHelpers.CreatePhase("1", System.DateTime.UtcNow, System.DateTime.UtcNow.AddHours(1), 0m); + var phase = TestHelpers.CreatePhase("1", DateTime.UtcNow, DateTime.UtcNow.AddHours(1), 0m); var projectInfo = TestHelpers.CreateProjectInfo(1, phase); var dynamoDb = new Mock(); var lockDealNFT = new Mock>(); From 58eb51a71262a18f88c8a5bc1d56557eeb3008d7 Mon Sep 17 00:00:00 2001 From: ArdenHide Date: Fri, 8 Aug 2025 14:16:20 +0300 Subject: [PATCH 4/5] - save token hashkey --- .../Services/DynamoDb/Models/ProjectsInformation.cs | 3 +++ .../AdminCreatePoolzBackId/AdminCreatePoolzBackIdHandler.cs | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/InvestProvider.Backend/Services/DynamoDb/Models/ProjectsInformation.cs b/src/InvestProvider.Backend/Services/DynamoDb/Models/ProjectsInformation.cs index 8ecdaab..4b9d83f 100644 --- a/src/InvestProvider.Backend/Services/DynamoDb/Models/ProjectsInformation.cs +++ b/src/InvestProvider.Backend/Services/DynamoDb/Models/ProjectsInformation.cs @@ -13,4 +13,7 @@ public class ProjectsInformation [JsonRequired] [DynamoDBProperty("PoolzBackId")] public long PoolzBackId { get; set; } + + [DynamoDBProperty("TokenHashKey")] + public string TokenHashKey { get; set; } } \ No newline at end of file diff --git a/src/InvestProvider.Backend/Services/Handlers/AdminCreatePoolzBackId/AdminCreatePoolzBackIdHandler.cs b/src/InvestProvider.Backend/Services/Handlers/AdminCreatePoolzBackId/AdminCreatePoolzBackIdHandler.cs index 7ff6fbf..4d5b5ae 100644 --- a/src/InvestProvider.Backend/Services/Handlers/AdminCreatePoolzBackId/AdminCreatePoolzBackIdHandler.cs +++ b/src/InvestProvider.Backend/Services/Handlers/AdminCreatePoolzBackId/AdminCreatePoolzBackIdHandler.cs @@ -25,7 +25,9 @@ public async Task Handle(AdminCreatePoolzBackIdR var onChainInfo = await strapi.ReceiveOnChainInfoAsync(request.ChainId); - _ = erc20Cache.GetOrAdd(new GetCacheRequest(request.ChainId, token, onChainInfo.RpcUrl)); + var tokenInfo = erc20Cache.GetOrAdd(new GetCacheRequest(request.ChainId, token, onChainInfo.RpcUrl)); + + request.TokenHashKey = tokenInfo.HashKey; await dynamoDb.SaveAsync(request, cancellationToken); From baafd6ffc77d9662e0814a1943a60edc32311d4a Mon Sep 17 00:00:00 2001 From: ArdenHide Date: Fri, 8 Aug 2025 14:27:18 +0300 Subject: [PATCH 5/5] - supress null --- .../Services/DynamoDb/Models/ProjectsInformation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/InvestProvider.Backend/Services/DynamoDb/Models/ProjectsInformation.cs b/src/InvestProvider.Backend/Services/DynamoDb/Models/ProjectsInformation.cs index 4b9d83f..0061489 100644 --- a/src/InvestProvider.Backend/Services/DynamoDb/Models/ProjectsInformation.cs +++ b/src/InvestProvider.Backend/Services/DynamoDb/Models/ProjectsInformation.cs @@ -15,5 +15,5 @@ public class ProjectsInformation public long PoolzBackId { get; set; } [DynamoDBProperty("TokenHashKey")] - public string TokenHashKey { get; set; } + public string TokenHashKey { get; set; } = null!; } \ No newline at end of file