summaryrefslogtreecommitdiff
path: root/src/marlin.web/Models
diff options
context:
space:
mode:
authorMelodi <62381002+Melodi17@users.noreply.github.com>2026-09-13 13:22:20 +1000
committerMelodi <62381002+Melodi17@users.noreply.github.com>2026-09-13 13:22:20 +1000
commitdf0737e55afeb5c01eb39909605970d1d3a73ffc (patch)
tree09823eaa310c60eefd2420dc305acae45c81900f /src/marlin.web/Models
parentee69ce25b2fba871920260028bb10c2d6b62b26f (diff)
refactor: cleanup; feat: connection to agent
Diffstat (limited to 'src/marlin.web/Models')
-rw-r--r--src/marlin.web/Models/Agent.cs17
-rw-r--r--src/marlin.web/Models/Job.cs48
-rw-r--r--src/marlin.web/Models/SecretKind.cs7
-rw-r--r--src/marlin.web/Models/VersionControlSource.cs15
-rw-r--r--src/marlin.web/Models/VersionControlledBlob.cs15
-rw-r--r--src/marlin.web/Models/VersionControlledBranch.cs14
-rw-r--r--src/marlin.web/Models/VersionControlledCommit.cs17
-rw-r--r--src/marlin.web/Models/WorkflowSnapshot.cs14
8 files changed, 147 insertions, 0 deletions
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<Job> 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<JobStatusUpdate> 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<VersionControlledBranch> 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<VersionControlledBranch> Branches { get; set; }
+ public ICollection<VersionControlledBlob> 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; }
+}