42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Options;
|
|
using Moonlight.Api.Configuration;
|
|
using Moonlight.Api.Database.Entities;
|
|
|
|
namespace Moonlight.Api.Database;
|
|
|
|
public class DataContext : DbContext
|
|
{
|
|
public DbSet<User> Users { get; set; }
|
|
public DbSet<SettingsOption> SettingsOptions { get; set; }
|
|
public DbSet<Role> Roles { get; set; }
|
|
public DbSet<RoleMember> RoleMembers { get; set; }
|
|
|
|
private readonly IOptions<DatabaseOptions> Options;
|
|
|
|
public DataContext(IOptions<DatabaseOptions> options)
|
|
{
|
|
Options = options;
|
|
}
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
if (optionsBuilder.IsConfigured)
|
|
return;
|
|
|
|
optionsBuilder.UseNpgsql(
|
|
$"Host={Options.Value.Host};" +
|
|
$"Port={Options.Value.Port};" +
|
|
$"Username={Options.Value.Username};" +
|
|
$"Password={Options.Value.Password};" +
|
|
$"Database={Options.Value.Database}"
|
|
);
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder.HasDefaultSchema("core");
|
|
|
|
base.OnModelCreating(modelBuilder);
|
|
}
|
|
} |