public static IConveyBuilder AddGumTreeModule(this IConveyBuilder builder) { builder.Services.AddHostedService <GumTreeHostedService>(); builder.Services.AddSingleton <IGumTreeDtoValidator, GumTreeTopicDtoValidator>(); builder.Services.AddSingleton <IGumTreeService, GumTreeService>(); builder.Services.AddSingleton <IPagesGenerator, PagesGenerator>(); builder.Services.AddSingleton <IGumTreeTopicDownloader, GumTreeTopicDownloader>(); builder.Services.AddControllers().AddNewtonsoftJson(); return(builder .AddMongo() .AddMongoRepository <GumtreeTopicDocument, Guid>("GumTreeTopics") .AddInfrastructure()); }
public static IConveyBuilder AddInfrastructure(this IConveyBuilder builder) { builder.Services.AddTransient <IHallsRepository, HallsRepository>(); builder.Services.AddTransient <IScheduleSchemasRepository, ScheduleSchemasRepository>(); builder.Services.AddTransient <ISchedulesRepository, SchedulesRepository>(); builder.Services.AddTransient <ISchedulesQueryService, SchedulesQueryService>(); builder.Services.AddTransient <IMoviesApiClient, MoviesApiClient>(); builder.Services.AddSingleton <IEventMapper, EventMapper>(); return(builder .AddMongo() .AddMongoRepository <HallDocument, Guid>("schedules_halls") .AddMongoRepository <ScheduleSchemaDocument, Guid>("schedulesSchemas") .AddMongoRepository <ScheduleDocument, Guid>("schedules")); }
public static IConveyBuilder AddMessageOutbox(this IConveyBuilder builder, string sectionName = SectionName) { if (!builder.TryRegister(RegistryName)) { return(builder); } var options = builder.GetOptions <OutboxOptions>(sectionName); builder.Services.AddSingleton(options); builder.AddMongo(); builder.AddMongoRepository <OutboxMessage, Guid>("outbox"); builder.Services.AddTransient <IMessageOutbox, MongoMessageOutbox>(); builder.Services.AddHostedService <OutboxProcessor>(); return(builder); }
public static IConveyBuilder AddInfrastructure(this IConveyBuilder builder) { #if (mongo && postgres) builder.Services.AddTransient <IOrdersRepository, Persistence.Mongo.Repositories.OrdersRepository>(); #else builder.Services.AddTransient <IOrdersRepository, OrdersRepository>(); #endif #if (!shared) builder.Services.AddTransient <IDispatcher, Dispatcher>(); #endif #if (mongo) return(builder .AddMongo() .AddMongoRepository <OrderDocument, Guid>("orders")); #else return(builder); #endif }
public static IConveyBuilder AddMessageInbox(this IConveyBuilder builder, string sectionName = SectionName) { if (!builder.TryRegister(RegistryName)) { return(builder); } var options = builder.GetOptions <InboxOptions>(sectionName); builder.Services.AddSingleton(options); if (!options.Enabled) { builder.RegisterInMemoryInbox(); return(builder); } switch (options.Type?.ToLowerInvariant() ?? string.Empty) { case "memory": builder.RegisterInMemoryInbox(); break; case "mongo": builder.AddMongo(); builder.Services.AddTransient <IMessageInbox, MongoMessageInbox>(); builder.Services.AddTransient <MongoInboxInitializer>(); builder.AddInitializer <MongoInboxInitializer>(); break; case "redis": builder.Services.AddTransient <IMessageInbox, RedisMessageInbox>(); break; default: builder.RegisterInMemoryInbox(); break; } return(builder); }
public static IConveyBuilder AddMessageOutbox(this IConveyBuilder builder, string sectionName = SectionName) { if (!builder.TryRegister(RegistryName)) { return(builder); } var options = builder.GetOptions <OutboxOptions>(sectionName); builder.Services.AddSingleton(options); switch (options.Type?.ToLowerInvariant() ?? string.Empty) { default: builder.AddMongo(); builder.AddMongoRepository <OutboxMessage, Guid>("outbox"); builder.Services.AddTransient <IMessageOutbox, MongoMessageOutbox>(); builder.Services.AddHostedService <OutboxProcessor>(); break; } return(builder); }