public static IServiceCollection AddHookmanSqlServerPersistence(this IServiceCollection services, Action <HookmanSqlServerPersistenceConfig> configAction)
        {
            var config = new HookmanSqlServerPersistenceConfig();

            configAction.Invoke(config);

            return(AddHookmanSqlServerPersistence(services, config));
        }
        public static IServiceCollection AddHookmanSqlServerPersistence(this IServiceCollection services, HookmanSqlServerPersistenceConfig config)
        {
            services.AddDbContextPool <HookmanDataContext>(options =>
            {
                options.UseSqlServer(config.ConnectionString, sqlServerOptionsAction =>
                {
                    sqlServerOptionsAction.CommandTimeout(120).EnableRetryOnFailure();
                    sqlServerOptionsAction.MigrationsHistoryTable(TableConstants.MigrationHistoryTableName, TableConstants.SchemaName);
                });
            });

            services.AddTransient <IActionRepository, ActionRepository>();
            services.AddTransient <IEventRepository, EventRepository>();
            services.AddTransient <IHookRepository, HookRepository>();
            services.AddTransient <IReceiverRepository, ReceiverRepository>();
            services.AddTransient <ISenderRepository, SenderRepository>();
            services.AddTransient <IStatusRepository, StatusRepository>();

            return(services);
        }