public async Task ResetBalanceAsync(DepositWalletKey key, long transactionBlock) { using (var context = new WalletManagerContext(_dbContextOptionsBuilder.Options)) { var existing = await context.EnrolledBalances.FindAsync(key.BlockchainId, key.BlockchainAssetId, key.WalletAddress.ToLower(CultureInfo.InvariantCulture)); if (existing != null) { context.EnrolledBalances.Update(existing); } else { var newEntity = new EnrolledBalanceEntity() { BlockchianId = key.BlockchainId, BlockchainAssetId = key.BlockchainAssetId, WalletAddress = key.WalletAddress.ToLower(CultureInfo.InvariantCulture), Balance = "0", BlockNumber = transactionBlock, OriginalWalletAddress = key.WalletAddress }; context.EnrolledBalances.Add(newEntity); } await context.SaveChangesAsync(); } }
public async Task SetAsync(CreateOperation operation) { using (var context = new WalletManagerContext(_dbContextOptionsBuilder.Options)) { var entity = MapToOperationEntity(operation); context.Operations.Add(entity); await context.SaveChangesAsync(); } }
public async Task <EnrolledBalance> TryGetAsync(DepositWalletKey key) { using (var context = new WalletManagerContext(_dbContextOptionsBuilder.Options)) { var result = await context.EnrolledBalances.FindAsync( key.BlockchainId, key.BlockchainAssetId, key.WalletAddress.ToLower(CultureInfo.InvariantCulture)); var mapped = MapFromEntity(result); return(mapped); } }
public async Task <IEnumerable <EnrolledBalance> > GetAllAsync(int skip, int count) { using (var context = new WalletManagerContext(_dbContextOptionsBuilder.Options)) { var result = context .EnrolledBalances .Skip(skip) .Take(count); await result.LoadAsync(); return(result.Select(MapFromEntity).ToList()); } }
public async Task <IEnumerable <Operation> > GetAllForBlockchainAsync(string blockchainId, int skip, int take) { using (var context = new WalletManagerContext(_dbContextOptionsBuilder.Options)) { var result = context.Operations.Where(x => x.BlockchianId == blockchainId) .OrderBy(x => x.OperationId) .Skip(skip) .Take(take); await result.LoadAsync(); return(result.Select(MapFromOperationEntity).ToList()); } }
public async Task <IEnumerable <EnrolledBalance> > GetAllForBlockchainAsync(string blockchainId, int skip, int count) { using (var context = new WalletManagerContext(_dbContextOptionsBuilder.Options)) { var result = context .EnrolledBalances .Where(x => x.BlockchianId == blockchainId) .Skip(skip) .Take(count); await result.LoadAsync(); return(result.Select(MapFromEntity).ToList()); } }
public async Task DeleteBalanceAsync(DepositWalletKey key) { using (var context = new WalletManagerContext(_dbContextOptionsBuilder.Options)) { var result = await context.EnrolledBalances.FindAsync( key.BlockchainId, key.BlockchainAssetId, key.WalletAddress.ToLower(CultureInfo.InvariantCulture)); if (result != null) { context.EnrolledBalances.Remove(result); } await context.SaveChangesAsync(); } }
public async Task <IEnumerable <Operation> > GetAsync(DepositWalletKey key, int skip, int take) { using (var context = new WalletManagerContext(_dbContextOptionsBuilder.Options)) { var result = context.Operations.Where(x => x.BlockchainAssetId == key.BlockchainAssetId && x.BlockchianId == key.BlockchainId && x.WalletAddress == key.WalletAddress.ToLower(CultureInfo.InvariantCulture)) .OrderBy(x => x.OperationId) .Skip(skip) .Take(take); await result.LoadAsync(); return(result.Select(MapFromOperationEntity).ToList()); } }
protected override void ConfigureServicesExt(IServiceCollection services) { services.AddMemoryCache(); //Should be here services.AddSingleton <DbContextOptionsBuilder <WalletManagerContext> >(x => { var optionsBuilder = new DbContextOptionsBuilder <WalletManagerContext>(); optionsBuilder.UseNpgsql(this.Config.Db.ConnectionString, builder => builder.MigrationsHistoryTable( PostgresRepositoryConfiguration.MigrationHistoryTable, PostgresRepositoryConfiguration.SchemaName)); return(optionsBuilder); }); var contextOptions = services.BuildServiceProvider().GetRequiredService <DbContextOptionsBuilder <WalletManagerContext> >(); using (var context = new WalletManagerContext(contextOptions.Options)) { context.Database.Migrate(); } }
public async Task <IEnumerable <EnrolledBalance> > GetAsync(IEnumerable <DepositWalletKey> keys) { var list = new List <EnrolledBalance>(); using (var context = new WalletManagerContext(_dbContextOptionsBuilder.Options)) { foreach (var key in keys) { var result = await context .EnrolledBalances .FindAsync(key.BlockchainId, key.BlockchainAssetId, key.WalletAddress.ToLower(CultureInfo.InvariantCulture)); if (result == null) { continue; } list.Add(MapFromEntity(result)); } } return(list); }