//
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using marlin.web.Data;
#nullable disable
namespace marlin.web.Migrations
{
[DbContext(typeof(ApplicationDbContext))]
[Migration("20260906003038_AddWorkflowSnapshot")]
partial class AddWorkflowSnapshot
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.11")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("marlin.core.models.Agent", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property("Capabilities")
.IsRequired()
.HasColumnType("text")
.HasColumnName("capabilities");
b.Property("LastSeen")
.HasColumnType("timestamp with time zone")
.HasColumnName("last_seen");
b.Property("MaxConcurrentJobs")
.HasColumnType("integer")
.HasColumnName("max_concurrent_jobs");
b.Property("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.HasKey("Id")
.HasName("pk_agents");
b.ToTable("agents", (string)null);
});
modelBuilder.Entity("marlin.core.models.Job", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property("AgentId")
.HasColumnType("uuid")
.HasColumnName("agent_id");
b.Property("Commit")
.IsRequired()
.HasColumnType("text")
.HasColumnName("commit");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("created_at");
b.Property("CreatedReason")
.IsRequired()
.HasColumnType("text")
.HasColumnName("created_reason");
b.Property("Recipe")
.IsRequired()
.HasColumnType("text")
.HasColumnName("recipe");
b.Property("Ref")
.IsRequired()
.HasColumnType("text")
.HasColumnName("ref");
b.Property("SourceId")
.HasColumnType("uuid")
.HasColumnName("source_id");
b.Property("Status")
.HasColumnType("integer")
.HasColumnName("status");
b.HasKey("Id")
.HasName("pk_jobs");
b.HasIndex("AgentId")
.HasDatabaseName("ix_jobs_agent_id");
b.HasIndex("SourceId")
.HasDatabaseName("ix_jobs_source_id");
b.ToTable("jobs", (string)null);
});
modelBuilder.Entity("marlin.core.models.JobStatusUpdate", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property("At")
.HasColumnType("timestamp with time zone")
.HasColumnName("at");
b.Property("JobId")
.HasColumnType("uuid")
.HasColumnName("job_id");
b.Property("Status")
.HasColumnType("integer")
.HasColumnName("status");
b.HasKey("Id")
.HasName("pk_job_status_update");
b.HasIndex("JobId")
.HasDatabaseName("ix_job_status_update_job_id");
b.ToTable("job_status_update", (string)null);
});
modelBuilder.Entity("marlin.core.models.VersionControlSource", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property("AccessSecretId")
.HasColumnType("uuid")
.HasColumnName("access_secret_id");
b.Property("BranchFilter")
.IsRequired()
.HasColumnType("text")
.HasColumnName("branch_filter");
b.Property("MainBranch")
.IsRequired()
.HasColumnType("text")
.HasColumnName("main_branch");
b.Property("MinPollingInterval")
.HasColumnType("integer")
.HasColumnName("min_polling_interval");
b.Property("UpstreamUrl")
.IsRequired()
.HasColumnType("text")
.HasColumnName("upstream_url");
b.HasKey("Id")
.HasName("pk_sources");
b.ToTable("sources", (string)null);
});
modelBuilder.Entity("marlin.core.models.VersionControlledBlob", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property("CommitId")
.HasColumnType("uuid")
.HasColumnName("commit_id");
b.Property("Content")
.IsRequired()
.HasColumnType("bytea")
.HasColumnName("content");
b.Property("Path")
.IsRequired()
.HasColumnType("text")
.HasColumnName("path");
b.Property("SourceId")
.HasColumnType("uuid")
.HasColumnName("source_id");
b.HasKey("Id")
.HasName("pk_source_blobs");
b.HasIndex("CommitId")
.HasDatabaseName("ix_source_blobs_commit_id");
b.HasIndex("SourceId")
.HasDatabaseName("ix_source_blobs_source_id");
b.ToTable("source_blobs", (string)null);
});
modelBuilder.Entity("marlin.core.models.VersionControlledBranch", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property("CommitId")
.HasColumnType("uuid")
.HasColumnName("commit_id");
b.Property("Name")
.IsRequired()
.HasColumnType("text")
.HasColumnName("name");
b.Property("SourceId")
.HasColumnType("uuid")
.HasColumnName("source_id");
b.HasKey("Id")
.HasName("pk_source_branches");
b.HasIndex("CommitId")
.HasDatabaseName("ix_source_branches_commit_id");
b.HasIndex("SourceId")
.HasDatabaseName("ix_source_branches_source_id");
b.ToTable("source_branches", (string)null);
});
modelBuilder.Entity("marlin.core.models.VersionControlledCommit", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property("BlobsFetched")
.HasColumnType("boolean")
.HasColumnName("blobs_fetched");
b.Property("Hash")
.IsRequired()
.HasColumnType("text")
.HasColumnName("hash");
b.Property("SourceId")
.HasColumnType("uuid")
.HasColumnName("source_id");
b.Property("WorkflowScanned")
.HasColumnType("boolean")
.HasColumnName("workflow_scanned");
b.HasKey("Id")
.HasName("pk_source_commits");
b.HasAlternateKey("SourceId", "Hash")
.HasName("ak_source_commits_source_id_hash");
b.ToTable("source_commits", (string)null);
});
modelBuilder.Entity("marlin.core.models.WorkflowSnapshot", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property("CommitId")
.HasColumnType("uuid")
.HasColumnName("commit_id");
b.Property("ScannedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("scanned_at");
b.Property("Workflow")
.IsRequired()
.HasColumnType("text")
.HasColumnName("workflow");
b.HasKey("Id")
.HasName("pk_workflow_snapshots");
b.HasIndex("CommitId")
.IsUnique()
.HasDatabaseName("ix_workflow_snapshots_commit_id");
b.ToTable("workflow_snapshots", (string)null);
});
modelBuilder.Entity("marlin.web.Models.VersionControlSecret", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id");
b.Property("Content")
.IsRequired()
.HasColumnType("text")
.HasColumnName("content");
b.Property("Kind")
.HasColumnType("text")
.HasColumnName("kind");
b.Property("Label")
.IsRequired()
.HasColumnType("text")
.HasColumnName("label");
b.Property("MayReveal")
.HasColumnType("boolean")
.HasColumnName("may_reveal");
b.Property("SourceId")
.HasColumnType("uuid")
.HasColumnName("source_id");
b.HasKey("Id")
.HasName("pk_secrets");
b.HasIndex("SourceId")
.HasDatabaseName("ix_secrets_source_id");
b.ToTable("secrets", (string)null);
});
modelBuilder.Entity("marlin.core.models.Job", b =>
{
b.HasOne("marlin.core.models.Agent", "Agent")
.WithMany()
.HasForeignKey("AgentId")
.HasConstraintName("fk_jobs_agents_agent_id");
b.HasOne("marlin.core.models.VersionControlSource", "Source")
.WithMany()
.HasForeignKey("SourceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_jobs_sources_source_id");
b.Navigation("Agent");
b.Navigation("Source");
});
modelBuilder.Entity("marlin.core.models.JobStatusUpdate", b =>
{
b.HasOne("marlin.core.models.Job", "Job")
.WithMany("StatusUpdates")
.HasForeignKey("JobId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_job_status_update_jobs_job_id");
b.Navigation("Job");
});
modelBuilder.Entity("marlin.core.models.VersionControlledBlob", b =>
{
b.HasOne("marlin.core.models.VersionControlledCommit", "Commit")
.WithMany("Blobs")
.HasForeignKey("CommitId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_source_blobs_source_commits_commit_id");
b.HasOne("marlin.core.models.VersionControlSource", "Source")
.WithMany()
.HasForeignKey("SourceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_source_blobs_sources_source_id");
b.Navigation("Commit");
b.Navigation("Source");
});
modelBuilder.Entity("marlin.core.models.VersionControlledBranch", b =>
{
b.HasOne("marlin.core.models.VersionControlledCommit", "Commit")
.WithMany("Branches")
.HasForeignKey("CommitId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_source_branches_source_commits_commit_id");
b.HasOne("marlin.core.models.VersionControlSource", "Source")
.WithMany("Branches")
.HasForeignKey("SourceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_source_branches_sources_source_id");
b.Navigation("Commit");
b.Navigation("Source");
});
modelBuilder.Entity("marlin.core.models.VersionControlledCommit", b =>
{
b.HasOne("marlin.core.models.VersionControlSource", "Source")
.WithMany()
.HasForeignKey("SourceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_source_commits_sources_source_id");
b.Navigation("Source");
});
modelBuilder.Entity("marlin.core.models.WorkflowSnapshot", b =>
{
b.HasOne("marlin.core.models.VersionControlledCommit", "Commit")
.WithOne("WorkflowSnapshot")
.HasForeignKey("marlin.core.models.WorkflowSnapshot", "CommitId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_workflow_snapshots_source_commits_commit_id");
b.Navigation("Commit");
});
modelBuilder.Entity("marlin.web.Models.VersionControlSecret", b =>
{
b.HasOne("marlin.core.models.VersionControlSource", "Source")
.WithMany()
.HasForeignKey("SourceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_secrets_sources_source_id");
b.Navigation("Source");
});
modelBuilder.Entity("marlin.core.models.Job", b =>
{
b.Navigation("StatusUpdates");
});
modelBuilder.Entity("marlin.core.models.VersionControlSource", b =>
{
b.Navigation("Branches");
});
modelBuilder.Entity("marlin.core.models.VersionControlledCommit", b =>
{
b.Navigation("Blobs");
b.Navigation("Branches");
b.Navigation("WorkflowSnapshot");
});
#pragma warning restore 612, 618
}
}
}