示例#1
0
        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();
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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());
            }
        }
示例#6
0
        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());
            }
        }
示例#7
0
        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();
            }
        }
示例#10
0
        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);
        }