using Elsa.Quartz.EntityFrameworkCore.Sqlite; using Elsa.Quartz.Features; using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Quartz; // ReSharper disable once CheckNamespace namespace Elsa.EntityFrameworkCore.Extensions; /// /// Provides extensions to configure EF Core to use SQLite. /// [PublicAPI] public static class SqliteQuartzExtensions { /// /// Configures the to use the SQLite job store. /// public static QuartzFeature UseSqlite(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString, bool useContextPooling = false) { if (useContextPooling) feature.Services.AddPooledDbContextFactory(options => UseSqlite(connectionString, options)); else feature.Services.AddDbContextFactory(options => UseSqlite(connectionString, options)); feature.ConfigureQuartz += quartz => { quartz.UsePersistentStore(store => { store.UseNewtonsoftJsonSerializer(); store.UseMicrosoftSQLite(connectionString); }); }; feature.Module.ConfigureHostedService>(-100); return feature; } private static void UseSqlite(string connectionString, DbContextOptionsBuilder options) { // Use SQLite migrations. options.UseSqlite(connectionString, sqlite => { sqlite.MigrationsAssembly(typeof(SqliteQuartzDbContext).Assembly.GetName().Name); }); } }