using Hangfire.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using Moonlight.ApiServer.Configuration; using Moonlight.ApiServer.Database.Entities; using Moonlight.ApiServer.Models; namespace Moonlight.ApiServer.Database; public class CoreDataContext : DbContext { private readonly AppConfiguration Configuration; public DbSet Users { get; set; } public DbSet ApiKeys { get; set; } public DbSet Themes { get; set; } public CoreDataContext(AppConfiguration configuration) { Configuration = configuration; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if(optionsBuilder.IsConfigured) return; var database = Configuration.Database; var connectionString = $"Host={database.Host};" + $"Port={database.Port};" + $"Database={database.Database};" + $"Username={database.Username};" + $"Password={database.Password}"; optionsBuilder.UseNpgsql(connectionString, builder => { builder.MigrationsHistoryTable("MigrationsHistory", "core"); }); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Model.SetDefaultSchema("core"); base.OnModelCreating(modelBuilder); modelBuilder.OnHangfireModelCreating(); modelBuilder.Ignore(); modelBuilder.Entity() .OwnsOne(x => x.Content, builder => { builder.ToJson(); }); } }