Implemented template crud, db entities, import/export, ptero and pelican import
This commit is contained in:
@@ -8,6 +8,9 @@ namespace MoonlightServers.Api.Infrastructure.Database;
|
||||
public class DataContext : DbContext
|
||||
{
|
||||
public DbSet<Node> Nodes { get; set; }
|
||||
public DbSet<Template> Templates { get; set; }
|
||||
public DbSet<TemplateDockerImage> TemplateDockerImages { get; set; }
|
||||
public DbSet<TemplateVariable> TemplateVariablesVariables { get; set; }
|
||||
|
||||
private readonly IOptions<DatabaseOptions> Options;
|
||||
public DataContext(IOptions<DatabaseOptions> options)
|
||||
@@ -34,5 +37,25 @@ public class DataContext : DbContext
|
||||
modelBuilder.HasDefaultSchema("servers");
|
||||
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
modelBuilder.Entity<Template>()
|
||||
.ComplexProperty(x => x.FilesConfig, builder => builder.ToJson())
|
||||
.ComplexProperty(x => x.LifecycleConfig, builder => builder.ToJson())
|
||||
.ComplexProperty(x => x.InstallationConfig, builder => builder.ToJson())
|
||||
.ComplexProperty(x => x.MiscellaneousConfig, builder => builder.ToJson());
|
||||
|
||||
// One-to-many: Template => DockerImages
|
||||
modelBuilder.Entity<Template>()
|
||||
.HasMany(t => t.DockerImages)
|
||||
.WithOne(d => d.Template)
|
||||
.HasForeignKey("TemplateId")
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
// One-to-one: Template => DefaultDockerImage
|
||||
modelBuilder.Entity<Template>()
|
||||
.HasOne(t => t.DefaultDockerImage)
|
||||
.WithOne()
|
||||
.HasForeignKey<Template>("DefaultDockerImageId")
|
||||
.OnDelete(DeleteBehavior.SetNull);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user