Ejemplo n.º 1
0
        /// <summary>
        /// Initialises the database.
        /// </summary>
        /// <param name="serviceProvider">The service provider.</param>
        /// <returns></returns>
        private static async Task InitialiseDatabase(IServiceProvider serviceProvider)
        {
            using (IServiceScope scope = serviceProvider.GetService <IServiceScopeFactory>().CreateScope())
            {
                SubscriptionServiceConfigurationContext subscriptionServiceConfigurationContext = scope.ServiceProvider.GetRequiredService <SubscriptionServiceConfigurationContext>();

                DatabaseSeeding.InitialiseDatabase(subscriptionServiceConfigurationContext);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the event store server.
        /// </summary>
        /// <param name="eventStoreServerId">The event store server identifier.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public async Task <EventStoreServer> GetEventStoreServer(Guid eventStoreServerId,
                                                                 CancellationToken cancellationToken)
        {
            EventStoreServer result = new EventStoreServer();

            using (SubscriptionServiceConfigurationContext context = this.ContextResolver())
            {
                Database.Models.EventStoreServer eventStoreServer = await context.EventStoreServers.Where(s => s.EventStoreServerId == eventStoreServerId).SingleOrDefaultAsync(cancellationToken);

                result.EventStoreServerId = eventStoreServer.EventStoreServerId;
                result.ConnectionString   = eventStoreServer.ConnectionString;
                result.Name = eventStoreServer.Name;
            }

            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Deletes the catch up subscription.
        /// </summary>
        /// <param name="catchUpSubscriptionId">The catch up subscription identifier.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <exception cref="NotFoundException">Catch Up Subscription Group with Id {catchUpSubscriptionId} not found</exception>
        public async Task DeleteCatchUpSubscription(Guid catchUpSubscriptionId,
                                                    CancellationToken cancellationToken)
        {
            Guard.ThrowIfInvalidGuid(catchUpSubscriptionId, typeof(ArgumentNullException), "A catchup subscription Id must be provided");

            using (SubscriptionServiceConfigurationContext context = this.ContextResolver())
            {
                Database.Models.CatchupSubscriptionConfiguration catchUpSubscriptionConfiguration = await context.CatchupSubscriptionConfigurations.Where(c => c.SubscriptionId == catchUpSubscriptionId)
                                                                                                    .SingleOrDefaultAsync(cancellationToken);

                if (catchUpSubscriptionConfiguration == null)
                {
                    throw new NotFoundException($"Catch Up Subscription Group with Id {catchUpSubscriptionId} not found");
                }

                context.CatchupSubscriptionConfigurations.Remove(catchUpSubscriptionConfiguration);

                await context.SaveChangesAsync(cancellationToken);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Resets the subscription stream position.
        /// </summary>
        /// <param name="subscriptionId">The subscription identifier.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <exception cref="NotFoundException">Subscription Group with Id {subscriptionConfiguration} not found</exception>
        public async Task ResetSubscriptionStreamPosition(Guid subscriptionId,
                                                          CancellationToken cancellationToken)
        {
            Guard.ThrowIfInvalidGuid(subscriptionId, typeof(ArgumentNullException), "A subscription group Id must be provided");

            using (SubscriptionServiceConfigurationContext context = this.ContextResolver())
            {
                Database.Models.SubscriptionConfiguration subscriptionConfiguration = await context.SubscriptionConfigurations.Where(g => g.SubscriptionId == subscriptionId)
                                                                                      .SingleOrDefaultAsync(cancellationToken);

                if (subscriptionConfiguration == null)
                {
                    throw new NotFoundException($"Subscription Group with Id {subscriptionConfiguration} not found");
                }

                // Reset the Stream Position
                subscriptionConfiguration.StreamPosition = null;

                await context.SaveChangesAsync(cancellationToken);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Gets the subscription configuration.
        /// </summary>
        /// <param name="subscriptionId">The subscription identifier.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public async Task <SubscriptionConfiguration> GetSubscriptionConfiguration(Guid subscriptionId,
                                                                                   CancellationToken cancellationToken)
        {
            SubscriptionConfiguration result = new SubscriptionConfiguration();

            using (SubscriptionServiceConfigurationContext context = this.ContextResolver())
            {
                Database.Models.SubscriptionConfiguration subscriptionConfiguration =
                    await context.SubscriptionConfigurations.Where(s => s.SubscriptionId == subscriptionId).SingleOrDefaultAsync(cancellationToken);

                result = new SubscriptionConfiguration
                {
                    EventStoreServerId          = subscriptionConfiguration.EventStoreServerId,
                    EndPointUri                 = subscriptionConfiguration.EndPointUri,
                    GroupName                   = subscriptionConfiguration.GroupName,
                    StreamName                  = subscriptionConfiguration.StreamName,
                    StreamPositionToRestartFrom = subscriptionConfiguration.StreamPosition,
                    SubscriptionId              = subscriptionConfiguration.SubscriptionId
                };
            }

            return(result);
        }
Ejemplo n.º 6
0
        public async Task <CatchupSubscriptionConfiguration> GetCatchupSubscriptionConfiguration(Guid subscriptionId,
                                                                                                 CancellationToken cancellationToken)
        {
            CatchupSubscriptionConfiguration result = new CatchupSubscriptionConfiguration();

            using (SubscriptionServiceConfigurationContext context = this.ContextResolver())
            {
                Database.Models.CatchupSubscriptionConfiguration catchupSubscriptionConfiguration =
                    await context.CatchupSubscriptionConfigurations.Where(s => s.SubscriptionId == subscriptionId).SingleOrDefaultAsync(cancellationToken);

                result = new CatchupSubscriptionConfiguration
                {
                    EventStoreServerId = catchupSubscriptionConfiguration.EventStoreServerId,
                    EndPointUri        = catchupSubscriptionConfiguration.EndPointUri,
                    Name           = catchupSubscriptionConfiguration.Name,
                    StreamName     = catchupSubscriptionConfiguration.StreamName,
                    Position       = catchupSubscriptionConfiguration.Position,
                    SubscriptionId = catchupSubscriptionConfiguration.SubscriptionId,
                    CreateDateTime = catchupSubscriptionConfiguration.CreateDateTime
                };
            }

            return(result);
        }