summaryrefslogtreecommitdiff
path: root/src/marlin.web/Data/ApplicationDbContext.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/marlin.web/Data/ApplicationDbContext.cs')
-rw-r--r--src/marlin.web/Data/ApplicationDbContext.cs23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/marlin.web/Data/ApplicationDbContext.cs b/src/marlin.web/Data/ApplicationDbContext.cs
index 2e05835..cb6b05b 100644
--- a/src/marlin.web/Data/ApplicationDbContext.cs
+++ b/src/marlin.web/Data/ApplicationDbContext.cs
@@ -3,6 +3,7 @@ namespace marlin.web.Data;
using System.Linq.Expressions;
using System.Text.Json;
using core;
+using core.functional;
using core.models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
@@ -26,6 +27,7 @@ public class ApplicationDbContext : DbContext
public DbSet<VersionControlSecret> Secrets => this.Set<VersionControlSecret>();
public DbSet<Job> Jobs => this.Set<Job>();
public DbSet<Agent> Agents => this.Set<Agent>();
+ public DbSet<WorkflowSnapshot> WorkflowSnapshots => this.Set<WorkflowSnapshot>();
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options) { }
@@ -35,9 +37,7 @@ public class ApplicationDbContext : DbContext
modelBuilder
.Entity<Agent>()
.Property(p => p.Capabilities)
- .HasConversion(
- v => JsonSerializer.Serialize(v, (JsonSerializerOptions?)null),
- v => JsonSerializer.Deserialize<CapabilitySet>(v, (JsonSerializerOptions?)null)!);
+ .HasJsonConversion();
modelBuilder
.Entity<VersionControlledCommit>()
@@ -46,10 +46,19 @@ public class ApplicationDbContext : DbContext
modelBuilder
.Entity<VersionControlSecret>()
.Property(p => p.Content)
- .HasConversion(
- v => JsonSerializer.Serialize(v, (JsonSerializerOptions?)null),
- v => JsonSerializer.Deserialize<Dictionary<string, string>>(v, (JsonSerializerOptions?)null)!);
-
+ .HasJsonConversion();
+
+ modelBuilder
+ .Entity<VersionControlledCommit>()
+ .HasOne(x => x.WorkflowSnapshot)
+ .WithOne(x => x.Commit)
+ .HasForeignKey<WorkflowSnapshot>(x => x.CommitId);
+
+ modelBuilder
+ .Entity<WorkflowSnapshot>()
+ .Property(p => p.Workflow)
+ .HasJsonConversion();
+
base.OnModelCreating(modelBuilder);
}
} \ No newline at end of file