using Microsoft.EntityFrameworkCore; using MoonCore.Extended.SingleDb; using Moonlight.ApiServer.Configuration; using MoonlightServers.ApiServer.Database.Entities; using MoonlightServers.ApiServer.Models; using MoonlightServers.Shared.Models; namespace MoonlightServers.ApiServer.Database; public class ServersDataContext : DatabaseContext { public override string Prefix { get; } = "Servers"; public DbSet Allocations { get; set; } public DbSet Nodes { get; set; } public DbSet Servers { get; set; } public DbSet ServerBackups { get; set; } public DbSet ServerShares { get; set; } public DbSet ServerVariables { get; set; } public DbSet Stars { get; set; } public DbSet StarDockerImages { get; set; } public DbSet StarVariables { get; set; } public ServersDataContext(AppConfiguration configuration) { Options = new() { Host = configuration.Database.Host, Port = configuration.Database.Port, Username = configuration.Database.Username, Password = configuration.Database.Password, Database = configuration.Database.Database }; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); #region Shares modelBuilder.Ignore(); modelBuilder.Ignore(); modelBuilder.Entity(builder => { builder.OwnsOne(x => x.Content, navigationBuilder => { navigationBuilder.ToJson(); navigationBuilder.OwnsMany(x => x.Permissions); }); }); #endregion } }