52 lines
1.7 KiB
C#
52 lines
1.7 KiB
C#
using DysonNetwork.Shared.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Design;
|
|
|
|
namespace DysonNetwork.Develop;
|
|
|
|
public class AppDatabase(
|
|
DbContextOptions<AppDatabase> options,
|
|
IConfiguration configuration
|
|
) : DbContext(options)
|
|
{
|
|
public DbSet<SnDeveloper> Developers { get; set; } = null!;
|
|
|
|
public DbSet<SnDevProject> DevProjects { get; set; } = null!;
|
|
|
|
public DbSet<SnCustomApp> CustomApps { get; set; } = null!;
|
|
public DbSet<SnCustomAppSecret> CustomAppSecrets { get; set; } = null!;
|
|
public DbSet<SnBotAccount> BotAccounts { get; set; } = null!;
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
optionsBuilder.UseNpgsql(
|
|
configuration.GetConnectionString("App"),
|
|
opt => opt
|
|
.ConfigureDataSource(optSource => optSource.EnableDynamicJson())
|
|
.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery)
|
|
.UseNodaTime()
|
|
).UseSnakeCaseNamingConvention();
|
|
|
|
base.OnConfiguring(optionsBuilder);
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
}
|
|
}
|
|
|
|
public class AppDatabaseFactory : IDesignTimeDbContextFactory<AppDatabase>
|
|
{
|
|
public AppDatabase CreateDbContext(string[] args)
|
|
{
|
|
var configuration = new ConfigurationBuilder()
|
|
.SetBasePath(Directory.GetCurrentDirectory())
|
|
.AddJsonFile("appsettings.json")
|
|
.Build();
|
|
|
|
var optionsBuilder = new DbContextOptionsBuilder<AppDatabase>();
|
|
return new AppDatabase(optionsBuilder.Options, configuration);
|
|
}
|
|
}
|