2023-10-29 15:17:38 +00:00
|
|
|
|
using Elsa.EntityFrameworkCore.Common;
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Provides extensions to configure EF Core to use SQLite.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[PublicAPI]
|
|
|
|
|
|
public static class SqliteQuartzExtensions
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Configures the <see cref="QuartzFeature"/> to use the SQLite job store.
|
|
|
|
|
|
/// </summary>
|
2024-06-18 11:53:57 +00:00
|
|
|
|
public static QuartzFeature UseSqlite(this QuartzFeature feature, string connectionString = Constants.DefaultConnectionString, bool useContextPooling = false)
|
2023-10-29 15:17:38 +00:00
|
|
|
|
{
|
2024-06-18 11:53:57 +00:00
|
|
|
|
if (useContextPooling)
|
|
|
|
|
|
feature.Services.AddPooledDbContextFactory<SqliteQuartzDbContext>(options => UseSqlite(connectionString, options));
|
|
|
|
|
|
else
|
|
|
|
|
|
feature.Services.AddDbContextFactory<SqliteQuartzDbContext>(options => UseSqlite(connectionString, options));
|
2023-10-29 15:17:38 +00:00
|
|
|
|
|
|
|
|
|
|
feature.ConfigureQuartz += quartz =>
|
|
|
|
|
|
{
|
|
|
|
|
|
quartz.UsePersistentStore(store =>
|
|
|
|
|
|
{
|
|
|
|
|
|
store.UseNewtonsoftJsonSerializer();
|
|
|
|
|
|
store.UseMicrosoftSQLite(connectionString);
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Configure the Quartz hosted service to run migrations.
|
|
|
|
|
|
feature.Module.ConfigureHostedService<RunMigrationsHostedService<SqliteQuartzDbContext>>(-100);
|
|
|
|
|
|
|
|
|
|
|
|
return feature;
|
|
|
|
|
|
}
|
2024-06-18 11:53:57 +00:00
|
|
|
|
|
|
|
|
|
|
private static void UseSqlite(string connectionString, DbContextOptionsBuilder options)
|
|
|
|
|
|
{
|
|
|
|
|
|
// Use SQLite migrations.
|
|
|
|
|
|
options.UseSqlite(connectionString, sqlite => { sqlite.MigrationsAssembly(typeof(SqliteQuartzDbContext).Assembly.GetName().Name); });
|
|
|
|
|
|
}
|
2023-10-29 15:17:38 +00:00
|
|
|
|
}
|