コード例 #1
0
 static Functions()
 {
     context = new EscarGoContext();
     _competitorRepository = new CompetitorRepositoryAsync(context);
     _storage        = new TableStorageRepository();
     _raceRepository = new RaceRepositoryAsync(context);
 }
コード例 #2
0
ファイル: SyncService.cs プロジェクト: cookdavid/ddd-backend
        public static async Task Sync(ISessionizeApiClient apiClient, ITableStorageRepository <SessionEntity> sessionRepo, ITableStorageRepository <PresenterEntity> presenterRepo, ILogger log, IDateTimeProvider dateTimeProvider, string conferenceInstance)
        {
            var sessionizeData = await apiClient.GetAllData();

            log.LogInformation("Retrieved {sessionCount} sessions, {presenterCount} presenters from Sessionize API {sessionizeApiUrl}", sessionizeData.Sessions.Length, sessionizeData.Speakers.Length, apiClient.GetUrl());

            var sourceData = SessionizeAdapter.SessionizeAdapter.Convert(sessionizeData, dateTimeProvider);

            log.LogInformation("Sessionize data successfully adapted to DDD domain model: {sessionCount} sessions and {presenterCount} presenters", sourceData.Item1.Length, sourceData.Item2.Length);

            var destinationSessions   = (await sessionRepo.GetAllAsync(conferenceInstance)).ToArray();
            var destinationPresenters = (await presenterRepo.GetAllAsync(conferenceInstance)).ToArray();

            log.LogInformation("Existing read model retrieved: {sessionCount} sessions and {presenterCount} presenters", destinationSessions.Length, destinationPresenters.Length);

            await PerformSync(conferenceInstance, sessionRepo, presenterRepo, sourceData.Item1, sourceData.Item2, destinationSessions, destinationPresenters, log, dateTimeProvider);
        }
コード例 #3
0
        public IUnitOfWork Open(string connectionString = null)
        {
            if (string.IsNullOrEmpty(connectionString))
            {
                connectionString = ConnectionString;
            }

            if (string.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentNullException("UnitOfWork.Open - Connection String is NULL.");
            }

            Db = connectionString.OpenDbConnection();

            Query                  = new Query(Db);
            Repository             = new OrmLiteRepository(Db);
            TableStorageRepository = new OrmLiteTableStorageRepository(Db);

            return(this);
        }
コード例 #4
0
 public LookupRepository(ITableStorageRepository <LookupEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #5
0
 public NinjaRepository(INinjaMappingService ninjaMappingService, ITableStorageRepository <NinjaEntity> ninjaEntityTableStorageRepository)
 {
     _ninjaMappingService = ninjaMappingService ?? throw new ArgumentNullException(nameof(ninjaMappingService));
     _ninjaEntityTableStorageRepository = ninjaEntityTableStorageRepository ?? throw new ArgumentNullException(nameof(ninjaEntityTableStorageRepository));
 }
コード例 #6
0
 public CompetitorRepositoryCQRS(EscarGoContext context) : base(context)
 {
     _storageRepository = new TableStorageRepository();
 }
コード例 #7
0
 public ChampionStatsRepository(ITableStorageRepository <ChampionStatsEntity> table)
 {
     _table = table ?? throw new NotImplementedException(nameof(table));
 }
コード例 #8
0
 public TableStorageService(ITableStorageRepository tableStorageRepository)
 {
     _tableStorageRepository = tableStorageRepository;
 }
コード例 #9
0
 public MailController(ITableStorageRepository repository)
 {
     _repository = repository;
 }
コード例 #10
0
 public BlacklistRepository(ITableStorageRepository <BlacklistEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #11
0
 public RequestedSummonerRepository(ITableStorageRepository <SummonerRequestEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #12
0
ファイル: RedisRepository.cs プロジェクト: nhat-tong/EscarGo
 public RedisRepository(ITableStorageRepository tableStorageRepository)
 {
     _tableStorageRepository = tableStorageRepository;
 }
コード例 #13
0
 public PolicyController(ITableStorageRepository <PolicyServerMap> policyServerModelRepository)
 {
     _policyServerModelRepository = policyServerModelRepository;
 }
コード例 #14
0
 public TeamCaptainRepository(ITableStorageRepository <TeamCaptainEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #15
0
 public CustomerController(ITableStorageRepository <Customers> tableStorageRepository)
 {
     _tableStorageRepository = tableStorageRepository;
 }
コード例 #16
0
ファイル: Crud.cs プロジェクト: TimGibbs/storageCrud
 public Crud(ITableStorageRepository <StoredJsonEntity> tableStorageRepository)
 {
     _tableStorageRepository = tableStorageRepository;
 }
コード例 #17
0
 public UserService(ITableStorageRepository <UserEntity> userRepository, IUserOperationQueuesService queuesService, IMapper mapper)
 {
     _userRepository = userRepository ?? throw new ArgumentNullException(nameof(userRepository));
     _queuesService  = queuesService ?? throw new ArgumentNullException(nameof(queuesService));
     _mapper         = mapper ?? throw new ArgumentNullException(nameof(mapper));
 }
コード例 #18
0
 public AlternateAccountRepository(ITableStorageRepository <AlternateAccountEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #19
0
 public BoardsController(ITableStorageRepository <BoardEntity> boardRepository)
 {
     _boardRepository = boardRepository ?? throw new ArgumentNullException(nameof(boardRepository));
 }
コード例 #20
0
 public DivisionRepository(ITableStorageRepository <DivisionEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #21
0
 public SeasonInfoRepository(ITableStorageRepository <SeasonInfoEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #22
0
 public AchievementRepository(ITableStorageRepository <AchievementEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #23
0
ファイル: Retweeter.cs プロジェクト: jeroenpot/JeroenOnAzure
 public Retweeter(ITableStorageRepository tableStorageRepository, ITwitterRepository twitterRepository)
 {
     _tableStorageRepository = tableStorageRepository;
     _twitterRepository = twitterRepository;
 }
コード例 #24
0
 public ProductCommandRepository(ITableStorageRepository tableStorageRepository, ILogger logger)
 {
     _tableStorageRepository = tableStorageRepository ?? throw new ArgumentNullException(nameof(tableStorageRepository));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
コード例 #25
0
 public PlayerStatsRepository(ITableStorageRepository <PlayerStatsEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #26
0
ファイル: SyncService.cs プロジェクト: cookdavid/ddd-backend
        private static async Task PerformSync(string conferenceInstance,
                                              ITableStorageRepository <SessionEntity> sessionRepo,
                                              ITableStorageRepository <PresenterEntity> presenterRepo,
                                              Session[] sourceSessions,
                                              Presenter[] sourcePresenters,
                                              IList <SessionEntity> destinationSessions,
                                              IList <PresenterEntity> destinationPresenters,
                                              ILogger log,
                                              IDateTimeProvider dateTimeProvider)
        {
            // Diff presenters
            var newPresenters      = sourcePresenters.Except(destinationPresenters.Select(x => x.GetPresenter()), new PresenterSync()).ToArray();
            var deletedPresenters  = destinationPresenters.Select(x => x.GetPresenter()).Except(sourcePresenters, new PresenterSync()).ToArray();
            var existingPresenters = destinationPresenters.Join(sourcePresenters,
                                                                dest => dest.ExternalId,
                                                                src => src.ExternalId,
                                                                (dest, src) => new { dest, src }).ToArray();
            var editedPresenters = existingPresenters.Where(x => !x.dest.GetPresenter().DataEquals(x.src)).ToArray();

            // Update presenter ids on sessions
            sourceSessions.ToList().ForEach(s => s.PresenterIds = s.PresenterIds.Select(pId =>
                                                                                        existingPresenters
                                                                                        .Where(x => x.src.Id == pId)
                                                                                        .Select(x => x.dest.Id)
                                                                                        .Cast <Guid?>()
                                                                                        .SingleOrDefault() ?? pId)
                                                                  .ToArray());

            // Sync presenters
            if (newPresenters.Any())
            {
                log.LogInformation("Adding new presenters to read model: {newPresenterIds}", (object)newPresenters.Select(x => x.Id).ToArray());
            }
            await Task.WhenAll(newPresenters.Select(p => presenterRepo.CreateAsync(new PresenterEntity(p, conferenceInstance))));

            if (deletedPresenters.Any())
            {
                log.LogInformation("Deleting presenters from read model: {deletedPresenterIds}", (object)deletedPresenters.Select(x => x.Id).ToArray());
                await Task.WhenAll(deletedPresenters.Select(p => presenterRepo.DeleteAsync(conferenceInstance, p.Id.ToString())));
            }
            if (editedPresenters.Any())
            {
                log.LogInformation("Updating presenters in read model: {editedPresenterIds}", (object)editedPresenters.Select(x => x.dest.Id).ToArray());
            }
            await Task.WhenAll(editedPresenters.Select(x => presenterRepo.UpdateAsync(x.dest.Update(x.src, dateTimeProvider))));

            if (!newPresenters.Any() && !deletedPresenters.Any() && !editedPresenters.Any())
            {
                log.LogInformation("Presenters up to date in read model");
            }

            // Exclude cancelled sessions
            sourceSessions = sourceSessions.Where(s => !s.Title.Contains("[Cancelled]")).ToArray();

            // Diff speakers
            var newSessions      = sourceSessions.Except(destinationSessions.Select(x => x.GetSession()), new SessionSync()).ToArray();
            var deletedSessions  = destinationSessions.Select(x => x.GetSession()).Except(sourceSessions, new SessionSync()).ToArray();
            var existingSessions = destinationSessions.Join(sourceSessions,
                                                            dest => dest.ExternalId,
                                                            src => src.ExternalId,
                                                            (dest, src) => new { dest, src }).ToArray();
            var editedSessions = existingSessions.Where(x => !x.dest.GetSession().DataEquals(x.src)).ToArray();

            // Sync speakers
            if (newSessions.Any())
            {
                log.LogInformation("Adding new sessions to read model: {newSessionIds}", (object)newSessions.Select(x => x.Id).ToArray());
            }
            await Task.WhenAll(newSessions.Select(s => sessionRepo.CreateAsync(new SessionEntity(s, conferenceInstance))));

            if (deletedSessions.Any())
            {
                log.LogInformation("Deleting sessions from read model: {deletedSessionIds}", (object)deletedSessions.Select(x => x.Id).ToArray());
                await Task.WhenAll(deletedSessions.Select(s => sessionRepo.DeleteAsync(conferenceInstance, s.Id.ToString())));
            }
            if (editedSessions.Any())
            {
                log.LogInformation("Editing sessions in read model: {editedSessionIds}", (object)editedSessions.Select(x => x.dest.Id).ToArray());
            }
            await Task.WhenAll(editedSessions.Select(x => sessionRepo.UpdateAsync(x.dest.Update(x.src, dateTimeProvider))));

            if (!newSessions.Any() && !deletedSessions.Any() && !editedSessions.Any())
            {
                log.LogInformation("Sessions up to date in read model");
            }
        }
コード例 #27
0
 public CardService(ITableStorageRepository <CardEntity> cardRepository, IMapper mapper)
 {
     _cardRepository = cardRepository ?? throw new ArgumentNullException(nameof(cardRepository));
     _mapper         = mapper ?? throw new ArgumentNullException(nameof(mapper));
 }
コード例 #28
0
 public ProductQueryRepository(ITableStorageRepository tableStoragerRepository)
 {
     _tableStorageRepository = tableStoragerRepository ?? throw new ArgumentNullException(nameof(tableStoragerRepository));
 }
コード例 #29
0
 public MatchDetailRepository(ITableStorageRepository <MatchDetailEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #30
0
 public GoogleDriveFolderRepository(ITableStorageRepository <GoogleDriveFolderEntity> table)
 {
     _table = table ?? throw new ArgumentNullException(nameof(table));
 }
コード例 #31
0
 public DbLogService(ITableStorageRepository <MessageLogEntity> tableStorageRepository, ILogLevelMapper logLevelMapper, string createdBy)
 {
     _tableStorageRepository = tableStorageRepository ?? throw new ArgumentNullException(nameof(tableStorageRepository));
     _logLevelMapper         = logLevelMapper ?? throw new ArgumentNullException(nameof(logLevelMapper));
     _createdBy = createdBy ?? throw new ArgumentNullException(nameof(createdBy));
 }