Esempio n. 1
0
        public static IServiceCollection AddStorageModule(this IServiceCollection services, Action <StorageModuleOptions> configureOptions)
        {
            var settings = new StorageModuleOptions();

            configureOptions(settings);

            services.Configure(configureOptions);

            services.AddDbContext <StorageDbContext>(options => options.UseSqlServer(settings.ConnectionStrings.Default, sql =>
            {
                if (!string.IsNullOrEmpty(settings.ConnectionStrings.MigrationsAssembly))
                {
                    sql.MigrationsAssembly(settings.ConnectionStrings.MigrationsAssembly);
                }
            }))
            .AddScoped <IRepository <FileEntry, Guid>, Repository <FileEntry, Guid> >()
            .AddScoped <IRepository <AuditLogEntry, Guid>, Repository <AuditLogEntry, Guid> >()
            .AddScoped <IRepository <EventLog, long>, Repository <EventLog, long> >();

            DomainEvents.RegisterHandlers(Assembly.GetExecutingAssembly(), services);

            services.AddMessageHandlers(Assembly.GetExecutingAssembly());

            services.AddStorageManager(settings);

            services.AddAuthorizationPolicies(Assembly.GetExecutingAssembly());

            return(services);
        }
        public static IServiceCollection AddStorageModule(this IServiceCollection services, StorageModuleOptions moduleOptions)
        {
            services.Configure <StorageModuleOptions>(op =>
            {
                op.ConnectionStrings = moduleOptions.ConnectionStrings;
                op.Storage           = moduleOptions.Storage;
                op.MessageBroker     = moduleOptions.MessageBroker;
            });

            services.AddDbContext <StorageDbContext>(options => options.UseSqlServer(moduleOptions.ConnectionStrings.Default, sql =>
            {
                if (!string.IsNullOrEmpty(moduleOptions.ConnectionStrings.MigrationsAssembly))
                {
                    sql.MigrationsAssembly(moduleOptions.ConnectionStrings.MigrationsAssembly);
                }
            }))
            .AddScoped <IRepository <FileEntry, Guid>, Repository <FileEntry, Guid> >();

            DomainEvents.RegisterHandlers(Assembly.GetExecutingAssembly(), services);

            services.AddMessageHandlers(Assembly.GetExecutingAssembly());

            services.AddStorageManager(moduleOptions.Storage);

            services.AddMessageBusSender <FileUploadedEvent>(moduleOptions.MessageBroker);
            services.AddMessageBusSender <FileDeletedEvent>(moduleOptions.MessageBroker);

            services.AddAuthorizationPolicies(Assembly.GetExecutingAssembly());

            return(services);
        }