From df0737e55afeb5c01eb39909605970d1d3a73ffc Mon Sep 17 00:00:00 2001 From: Melodi <62381002+Melodi17@users.noreply.github.com> Date: Sun, 13 Sep 2026 13:22:20 +1000 Subject: refactor: cleanup; feat: connection to agent --- src/marlin.web/Models/Agent.cs | 17 +++++++++ src/marlin.web/Models/Job.cs | 48 ++++++++++++++++++++++++ src/marlin.web/Models/SecretKind.cs | 7 ++++ src/marlin.web/Models/VersionControlSource.cs | 15 ++++++++ src/marlin.web/Models/VersionControlledBlob.cs | 15 ++++++++ src/marlin.web/Models/VersionControlledBranch.cs | 14 +++++++ src/marlin.web/Models/VersionControlledCommit.cs | 17 +++++++++ src/marlin.web/Models/WorkflowSnapshot.cs | 14 +++++++ 8 files changed, 147 insertions(+) create mode 100644 src/marlin.web/Models/Agent.cs create mode 100644 src/marlin.web/Models/Job.cs create mode 100644 src/marlin.web/Models/SecretKind.cs create mode 100644 src/marlin.web/Models/VersionControlSource.cs create mode 100644 src/marlin.web/Models/VersionControlledBlob.cs create mode 100644 src/marlin.web/Models/VersionControlledBranch.cs create mode 100644 src/marlin.web/Models/VersionControlledCommit.cs create mode 100644 src/marlin.web/Models/WorkflowSnapshot.cs (limited to 'src/marlin.web/Models') diff --git a/src/marlin.web/Models/Agent.cs b/src/marlin.web/Models/Agent.cs new file mode 100644 index 0000000..1faea9d --- /dev/null +++ b/src/marlin.web/Models/Agent.cs @@ -0,0 +1,17 @@ +namespace marlin.web.Models; + +using core.models; + +public class Agent +{ + public Guid Id { get; set; } + public string AuthToken { get; set; } + + public string Name { get; set; } + public int MaxConcurrentJobs { get; set; } + public DateTime LastSeen { get; set; } + + public CapabilitySet Capabilities { get; set; } + + public ICollection Jobs { get; set; } +} \ No newline at end of file diff --git a/src/marlin.web/Models/Job.cs b/src/marlin.web/Models/Job.cs new file mode 100644 index 0000000..bd60773 --- /dev/null +++ b/src/marlin.web/Models/Job.cs @@ -0,0 +1,48 @@ +namespace marlin.web.Models; + +public class Job +{ + public Guid Id { get; set; } + + public Guid SourceId { get; set; } + public VersionControlSource Source { get; set; } + + public Guid BranchId { get; set; } + public VersionControlledBranch Branch { get; set; } + + public Guid CommitId { get; set; } + public VersionControlledCommit Commit { get; set; } + + public string CreatedReason { get; set; } + public DateTime CreatedAt { get; set; } + public JobStatus Status { get; set; } + public ICollection StatusUpdates { get; set; } + + public Guid? AgentId { get; set; } + public Agent? Agent { get; set; } + + public string? ClaimToken { get; set; } + + public string Recipe { get; set; } + // plan +} + +public class JobStatusUpdate +{ + public Guid Id { get; set; } + + public Guid JobId { get; set; } + public Job Job { get; set; } + + public DateTime At { get; set; } + public JobStatus Status { get; set; } +} + +public enum JobStatus +{ + Pending, + Active, + Cancelled, + Success, + Failed +} \ No newline at end of file diff --git a/src/marlin.web/Models/SecretKind.cs b/src/marlin.web/Models/SecretKind.cs new file mode 100644 index 0000000..02652d5 --- /dev/null +++ b/src/marlin.web/Models/SecretKind.cs @@ -0,0 +1,7 @@ +namespace marlin.web.Models; + +public static class SecretKind +{ + public const string HTTPToken = "http-token"; + public const string SSHKey = "ssh-key"; +} \ No newline at end of file diff --git a/src/marlin.web/Models/VersionControlSource.cs b/src/marlin.web/Models/VersionControlSource.cs new file mode 100644 index 0000000..270df12 --- /dev/null +++ b/src/marlin.web/Models/VersionControlSource.cs @@ -0,0 +1,15 @@ +namespace marlin.web.Models; + +public class VersionControlSource +{ + public Guid Id { get; set; } + + public string UpstreamUrl { get; set; } + public string MainBranch { get; set; } + public string BranchFilter { get; set; } + public int MinPollingInterval { get; set; } + + public Guid? AccessSecretId { get; set; } + + public ICollection Branches { get; set; } +} \ No newline at end of file diff --git a/src/marlin.web/Models/VersionControlledBlob.cs b/src/marlin.web/Models/VersionControlledBlob.cs new file mode 100644 index 0000000..5b9017f --- /dev/null +++ b/src/marlin.web/Models/VersionControlledBlob.cs @@ -0,0 +1,15 @@ +namespace marlin.web.Models; + +public class VersionControlledBlob +{ + public Guid Id { get; set; } + + public Guid SourceId { get; set; } + public VersionControlSource Source { get; set; } + + public Guid CommitId { get; set; } + public VersionControlledCommit Commit { get; set; } + + public string Path { get; set; } + public byte[] Content { get; set; } +} \ No newline at end of file diff --git a/src/marlin.web/Models/VersionControlledBranch.cs b/src/marlin.web/Models/VersionControlledBranch.cs new file mode 100644 index 0000000..a2973f7 --- /dev/null +++ b/src/marlin.web/Models/VersionControlledBranch.cs @@ -0,0 +1,14 @@ +namespace marlin.web.Models; + +public class VersionControlledBranch +{ + public Guid Id { get; set; } + + public Guid SourceId { get; set; } + public VersionControlSource Source { get; set; } + + public Guid CommitId { get; set; } + public VersionControlledCommit Commit { get; set; } + + public string Name { get; set; } +} \ No newline at end of file diff --git a/src/marlin.web/Models/VersionControlledCommit.cs b/src/marlin.web/Models/VersionControlledCommit.cs new file mode 100644 index 0000000..9062156 --- /dev/null +++ b/src/marlin.web/Models/VersionControlledCommit.cs @@ -0,0 +1,17 @@ +namespace marlin.web.Models; + +public class VersionControlledCommit +{ + public Guid Id { get; set; } + + public Guid SourceId { get; set; } + public VersionControlSource Source { get; set; } + public bool BlobsFetched { get; set; } + public bool WorkflowScanned { get; set; } + + public string Hash { get; set; } + + public ICollection Branches { get; set; } + public ICollection Blobs { get; set; } + public WorkflowSnapshot? WorkflowSnapshot { get; set; } +} \ No newline at end of file diff --git a/src/marlin.web/Models/WorkflowSnapshot.cs b/src/marlin.web/Models/WorkflowSnapshot.cs new file mode 100644 index 0000000..2ea7bce --- /dev/null +++ b/src/marlin.web/Models/WorkflowSnapshot.cs @@ -0,0 +1,14 @@ +namespace marlin.web.Models; + +using marlin.core.models.meta; + +public class WorkflowSnapshot +{ + public Guid Id { get; set; } + + public Guid CommitId { get; set; } + public VersionControlledCommit Commit { get; set; } + + public DateTime ScannedAt { get; set; } + public Workflow Workflow { get; set; } +} -- cgit v1.3.1