public async Task StartInitializationModeAsync()
        {
            _logger.LogDebug("StartInitializationMode");

            _initEntityStore = new InMemoryEntityStore(new OptionsWrapper <InMemoryEntityStoreOptions>(
                                                           new InMemoryEntityStoreOptions()),
                                                       new InMemoryEntityStoreConnectionProvider(),
                                                       _loggerFactory,
                                                       NullCacheClient.Instance,
                                                       new OptionsWrapper <CacheOptions>(
                                                           new CacheOptions
            {
                CachingDisabled = true
            }
                                                           )
                                                       );

            IsInitializing   = true;
            IsLiveProcessing = false;
            IsReady          = false;

            Status = new ProjectionStatus();
            Status.SetEntityId(ProjectorId);
            Status.LastCheckPoint = -1;
            Status.ProjectorId    = ProjectorId;
            Status.StreamName     = StreamName;

            await EntityStore.InsertItemAsync(Status, _cancellationToken).ConfigureAwait(false);
        }
Ejemplo n.º 2
0
    ProjectionStatus CreateStatusFromInfo(ProjectionInfo info, TenantId tenant = null)
    {
        var status = new ProjectionStatus
        {
            Alias        = info.Alias,
            Copies       = _definitionConverter.ToContractsCopySpecification(info.Definition.Copies),
            InitialState = info.Definition.InitialState,
            ScopeId      = info.Definition.Scope.ToProtobuf(),
            ProjectionId = info.Definition.Projection.ToProtobuf(),
        };

        status.Events.AddRange(_definitionConverter.ToContractsEventSelectors(info.Definition.Events));
        status.Tenants.AddRange(CreateScopedStreamProcessorStatus(info, tenant));
        return(status);
    }
        public ProjectionVersion Parse(string columnFamily)
        {
            var parts = columnFamily.Split('_');

            if (parts.Length < 3)
            {
                throw new ArgumentException($"Unable to parse '{nameof(ProjectionVersion)}' from '{columnFamily}'.", nameof(columnFamily));
            }

            if (int.TryParse(parts[1], out var revision) == false)
            {
                throw new ArgumentException($"Invalid projection revision '{parts[1]}'.", nameof(columnFamily));
            }

            return(new ProjectionVersion(parts[0], ProjectionStatus.Create("unknown"), revision, parts[2]));
        }
Ejemplo n.º 4
0
        protected override void Seed(CinemaReserveDbContext context)
        {
            FreeSeatStatus = context.SeatStatus.FirstOrDefault(st => st.Status == "free") ?? new SeatStatus()
            {
                Status = "free"
            };

            UpcomingReservationStatus = context.ProjectionStatuses.FirstOrDefault(st => st.Status == "upcoming") ?? new ProjectionStatus()
            {
                Status = "upcoming"
            };

            for (int i = 0; i < 5; i++)
            {
                Cinema newCinema = this.GetCinema(i);
                context.Cinemas.Add(newCinema);
            }
            context.SaveChanges();
        }
        public async Task StartInitializationModeAsync()
        {
            _logger.LogDebug("StartInitializationMode");

            _initEntityStore = new InMemoryEntityStore(new InMemoryEntityStoreOptions
            {
                CachingDisabled = true,
                CacheClient     = NullCacheClient.Instance,
                LoggerFactory   = _loggerFactory
            }, new InMemoryEntityStoreConnectionProvider());

            InitializationMode = true;
            IsLiveProcessing   = false;
            IsReady            = false;

            Status = new ProjectionStatus();
            Status.SetEntityId(ProjectorId);
            Status.LastCheckPoint = -1;

            await _initEntityStore.InsertItemAsync(Status);
        }
        public IActionResult Finalize([FromBody] RequestModel model)
        {
            var version = new Projections.ProjectionVersion(model.ProjectionContractId, ProjectionStatus.Create(model.Version.Status), model.Version.Revision, model.Version.Hash);
            var command = new FinalizeProjectionVersionRequest(new ProjectionVersionManagerId(model.ProjectionContractId, context.Tenant), version);

            if (_publisher.Publish(command))
            {
                return(new OkObjectResult(new ResponseResult()));
            }

            return(new BadRequestObjectResult(new ResponseResult <string>($"Unable to publish command '{nameof(FinalizeProjectionVersionRequest)}'")));
        }