/// <summary> /// Adds configuration for <see cref="MigrationsMiddleware"/> into <see cref="IServiceCollection"/>. /// </summary> /// <param name="setupAction">Setup migration options.</param> /// <returns>This instance of <see cref="KormBuilder"/>.</returns> public KormBuilder AddKormMigrations(Action <MigrationOptions> setupAction = null) { Services.AddMemoryCache(); MigrationOptions options = SetupMigrationOptions(setupAction); _migrationsRunner = new MigrationsRunner(ConnectionSettings.ConnectionString, options); return(this); }
/// <summary> /// Invokes the specified context. /// </summary> /// <param name="context">The context.</param> /// <param name="migrationsRunner">Migrations runner.</param> public async Task Invoke( HttpContext context, IMigrationsRunner migrationsRunner) { if (CanMigrate()) { SetupCache(); await migrationsRunner.MigrateAsync(); } }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostEnvironment env, IMigrationsRunner migrationsRunner) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseHsts(); } app.UseGraphiQl("/graphql/users"); app.UseMvc(); app.UseHttpsRedirection(); migrationsRunner.Run(); }
/// <summary> /// Invokes the specified context. /// </summary> /// <param name="context">The context.</param> /// <param name="databaseFactory">Database factory for getting <see cref="IMigrationsRunner"/>.</param> public async Task Invoke(HttpContext context, IDatabaseFactory databaseFactory) { string databaseName = null; if (context.Request.Path.HasValue) { databaseName = context.Request.Path.Value.Trim('/'); } if (string.IsNullOrEmpty(databaseName)) { databaseName = KormBuilder.DefaultConnectionStringName; } IMigrationsRunner migrationsRunner = databaseFactory.GetMigrationsRunner(databaseName); if ((migrationsRunner != null) && CanMigrate(databaseName)) { SetupCache(databaseName); await migrationsRunner.MigrateAsync(); } }