1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
CREATE TABLE IF NOT EXISTS "workflows" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
"repository_id" uuid NOT NULL,
"name" text NOT NULL,
"path" text NOT NULL,
"yaml" text NOT NULL,
"parsed" text NOT NULL,
"on_events" text NOT NULL DEFAULT '[]',
"disabled" boolean DEFAULT false NOT NULL,
"created_at" timestamp DEFAULT now() NOT NULL,
"updated_at" timestamp DEFAULT now() NOT NULL,
CONSTRAINT "workflows_repo_fk" FOREIGN KEY ("repository_id") REFERENCES "repositories"("id") ON DELETE cascade
);
CREATE INDEX IF NOT EXISTS "workflows_repo" ON "workflows" ("repository_id");
CREATE UNIQUE INDEX IF NOT EXISTS "workflows_repo_path" ON "workflows" ("repository_id", "path");
CREATE TABLE IF NOT EXISTS "workflow_runs" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
"workflow_id" uuid NOT NULL,
"repository_id" uuid NOT NULL,
"run_number" integer NOT NULL,
"event" text NOT NULL,
"ref" text,
"commit_sha" text,
"triggered_by" uuid,
"status" text NOT NULL DEFAULT 'queued',
"conclusion" text,
"queued_at" timestamp DEFAULT now() NOT NULL,
"started_at" timestamp,
"finished_at" timestamp,
"created_at" timestamp DEFAULT now() NOT NULL,
CONSTRAINT "workflow_runs_workflow_fk" FOREIGN KEY ("workflow_id") REFERENCES "workflows"("id") ON DELETE cascade,
CONSTRAINT "workflow_runs_repo_fk" FOREIGN KEY ("repository_id") REFERENCES "repositories"("id") ON DELETE cascade,
CONSTRAINT "workflow_runs_user_fk" FOREIGN KEY ("triggered_by") REFERENCES "users"("id") ON DELETE set null
);
CREATE INDEX IF NOT EXISTS "workflow_runs_repo" ON "workflow_runs" ("repository_id");
CREATE INDEX IF NOT EXISTS "workflow_runs_status" ON "workflow_runs" ("status");
CREATE INDEX IF NOT EXISTS "workflow_runs_workflow" ON "workflow_runs" ("workflow_id");
CREATE TABLE IF NOT EXISTS "workflow_jobs" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
"run_id" uuid NOT NULL,
"name" text NOT NULL,
"job_order" integer NOT NULL DEFAULT 0,
"runs_on" text NOT NULL DEFAULT 'default',
"status" text NOT NULL DEFAULT 'queued',
"conclusion" text,
"exit_code" integer,
"steps" text NOT NULL DEFAULT '[]',
"logs" text NOT NULL DEFAULT '',
"started_at" timestamp,
"finished_at" timestamp,
"created_at" timestamp DEFAULT now() NOT NULL,
CONSTRAINT "workflow_jobs_run_fk" FOREIGN KEY ("run_id") REFERENCES "workflow_runs"("id") ON DELETE cascade
);
CREATE INDEX IF NOT EXISTS "workflow_jobs_run" ON "workflow_jobs" ("run_id");
CREATE TABLE IF NOT EXISTS "workflow_artifacts" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
"run_id" uuid NOT NULL,
"job_id" uuid,
"name" text NOT NULL,
"size_bytes" integer NOT NULL DEFAULT 0,
"content_type" text DEFAULT 'application/octet-stream' NOT NULL,
"content" bytea,
"created_at" timestamp DEFAULT now() NOT NULL,
CONSTRAINT "workflow_artifacts_run_fk" FOREIGN KEY ("run_id") REFERENCES "workflow_runs"("id") ON DELETE cascade,
CONSTRAINT "workflow_artifacts_job_fk" FOREIGN KEY ("job_id") REFERENCES "workflow_jobs"("id") ON DELETE set null
);
CREATE INDEX IF NOT EXISTS "workflow_artifacts_run" ON "workflow_artifacts" ("run_id");
|