From 95e93bcf414a30391cb138b3b8f1ab21e1dd0ae5 Mon Sep 17 00:00:00 2001 From: Brian Rogers Date: Thu, 21 May 2026 13:55:17 -0600 Subject: [PATCH] adding foreign key references --- .../db/migrations/2026_00_00_create_audit_log_table.sql | 2 +- .../2026_01_00_000001_create_projects_table.sql | 4 ++-- .../2026_01_00_000002_create_project_user_table.sql | 6 +++--- .../2026_01_00_000003_create_project_labels_table.sql | 4 ++-- .../2026_01_00_000004_create_project_links_table.sql | 4 ++-- ...2026_01_00_000005_create_project_attachments_table.sql | 4 ++-- .../2026_01_00_000006_create_project_favorites_table.sql | 4 ++-- ...026_01_00_000007_create_project_dependencies_table.sql | 4 ++-- .../migrations/2026_01_01_000001_create_issues_table.sql | 8 ++++---- .../2026_01_01_000002_create_issue_labels_table.sql | 6 +++--- .../2026_01_01_000003_create_issue_links_table.sql | 4 ++-- .../2026_01_01_000004_create_issue_attachments_table.sql | 4 ++-- .../2026_01_01_000005_create_issue_blockers_table.sql | 4 ++-- .../2026_01_01_000105_create_issue_comments_table.sql | 4 ++-- ...2026_01_01_000106_create_issue_comment_links_table.sql | 4 ++-- ...1_01_000107_create_issue_comment_attachments_table.sql | 4 ++-- 16 files changed, 35 insertions(+), 35 deletions(-) diff --git a/internal/db/migrations/2026_00_00_create_audit_log_table.sql b/internal/db/migrations/2026_00_00_create_audit_log_table.sql index 8c03366..9aa8701 100644 --- a/internal/db/migrations/2026_00_00_create_audit_log_table.sql +++ b/internal/db/migrations/2026_00_00_create_audit_log_table.sql @@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS "audit_log" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, - "initiated_by" Integer NOT NULL, + "initiated_by" Integer NOT NULL REFERENCES "users"("id"), "webhook_action" Boolean NOT NULL DEFAULT FALSE, "resource_type" Text NOT NULL, "resource_id" Integer NOT NULL, diff --git a/internal/db/migrations/2026_01_00_000001_create_projects_table.sql b/internal/db/migrations/2026_01_00_000001_create_projects_table.sql index 72bb289..f0ac37a 100644 --- a/internal/db/migrations/2026_01_00_000001_create_projects_table.sql +++ b/internal/db/migrations/2026_01_00_000001_create_projects_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "projects" ------------------------------------ CREATE TABLE IF NOT EXISTS "projects"( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "creator_id" Integer NOT NULL, - "owner_id" Integer NOT NULL, + "creator_id" Integer NOT NULL REFERENCES "users"("id"), + "owner_id" Integer NOT NULL REFERENCES "users"("id"), "git_repository_url" Text, "title" Text NOT NULL, "description" Text, diff --git a/internal/db/migrations/2026_01_00_000002_create_project_user_table.sql b/internal/db/migrations/2026_01_00_000002_create_project_user_table.sql index 577f2e0..b866965 100644 --- a/internal/db/migrations/2026_01_00_000002_create_project_user_table.sql +++ b/internal/db/migrations/2026_01_00_000002_create_project_user_table.sql @@ -2,9 +2,9 @@ -- CREATE TABLE "project_user" --------------------------------- CREATE TABLE IF NOT EXISTS "project_user" ( - "project_id" Integer NOT NULL, - "user_id" Integer NOT NULL, - "invited_by_user_id" Integer, + "project_id" Integer NOT NULL REFERENCES "projects"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), + "invited_by_user_id" Integer REFERENCES "users"("id"), "role" Text NOT NULL DEFAULT 'member', "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted_at" DateTime, diff --git a/internal/db/migrations/2026_01_00_000003_create_project_labels_table.sql b/internal/db/migrations/2026_01_00_000003_create_project_labels_table.sql index 88f167f..4b5dc88 100644 --- a/internal/db/migrations/2026_01_00_000003_create_project_labels_table.sql +++ b/internal/db/migrations/2026_01_00_000003_create_project_labels_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "project_labels" ------------------------------- CREATE TABLE IF NOT EXISTS "project_labels" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "project_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "project_id" Integer NOT NULL REFERENCES "projects"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "label" Text NOT NULL, "color" Text NOT NULL DEFAULT '#42f5ce', "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, diff --git a/internal/db/migrations/2026_01_00_000004_create_project_links_table.sql b/internal/db/migrations/2026_01_00_000004_create_project_links_table.sql index b2d1e93..65c3e70 100644 --- a/internal/db/migrations/2026_01_00_000004_create_project_links_table.sql +++ b/internal/db/migrations/2026_01_00_000004_create_project_links_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "project_links" -------------------------------- CREATE TABLE IF NOT EXISTS "project_links" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "project_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "project_id" Integer NOT NULL REFERENCES "projects"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "remote_url" Text NOT NULL, "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted_at" DateTime diff --git a/internal/db/migrations/2026_01_00_000005_create_project_attachments_table.sql b/internal/db/migrations/2026_01_00_000005_create_project_attachments_table.sql index 362619c..b0cc0da 100644 --- a/internal/db/migrations/2026_01_00_000005_create_project_attachments_table.sql +++ b/internal/db/migrations/2026_01_00_000005_create_project_attachments_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "project_attachments" -------------------------- CREATE TABLE IF NOT EXISTS "project_attachments" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "project_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "project_id" Integer NOT NULL REFERENCES "projects"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "path" TEXT NOT NULL, "preview_path" TEXT NOT NULL, "filesize" Integer NOT NULL DEFAULT 0, diff --git a/internal/db/migrations/2026_01_00_000006_create_project_favorites_table.sql b/internal/db/migrations/2026_01_00_000006_create_project_favorites_table.sql index 581cbf8..76baf6a 100644 --- a/internal/db/migrations/2026_01_00_000006_create_project_favorites_table.sql +++ b/internal/db/migrations/2026_01_00_000006_create_project_favorites_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "project_favorites" ---------------------------- CREATE TABLE IF NOT EXISTS "project_favorites" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "project_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "project_id" Integer NOT NULL REFERENCES "projects"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "favorited_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted_at" DateTime, CONSTRAINT "idx_project_user" UNIQUE ( project_id, user_id ) ); diff --git a/internal/db/migrations/2026_01_00_000007_create_project_dependencies_table.sql b/internal/db/migrations/2026_01_00_000007_create_project_dependencies_table.sql index 593ae57..259c51c 100644 --- a/internal/db/migrations/2026_01_00_000007_create_project_dependencies_table.sql +++ b/internal/db/migrations/2026_01_00_000007_create_project_dependencies_table.sql @@ -2,8 +2,8 @@ -- CREATE TABLE "project_dependencies" ----------------------------- CREATE TABLE IF NOT EXISTS "project_dependencies" ( - "source_project_id" Integer NOT NULL, - "blocking_project_id" Integer NOT NULL, + "source_project_id" Integer NOT NULL REFERENCES "projects"("id"), + "blocking_project_id" Integer NOT NULL REFERENCES "projects"("id"), "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "idx_dependant_project" UNIQUE ( source_project_id, blocking_project_id ) ); diff --git a/internal/db/migrations/2026_01_01_000001_create_issues_table.sql b/internal/db/migrations/2026_01_01_000001_create_issues_table.sql index 7a69136..c90d897 100644 --- a/internal/db/migrations/2026_01_01_000001_create_issues_table.sql +++ b/internal/db/migrations/2026_01_01_000001_create_issues_table.sql @@ -3,9 +3,9 @@ -- CREATE TABLE "issues" --------------------------------------- CREATE TABLE IF NOT EXISTS "issues" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "creator_id" Integer NOT NULL, - "assignee_id" Integer, - "project_id" Integer NOT NULL, + "creator_id" Integer NOT NULL REFERENCES "users"("id"), + "assignee_id" Integer REFERENCES "users"("id"), + "project_id" Integer NOT NULL REFERENCES "projects"("id"), "project_issue_id" Integer NOT NULL, "title" Text, "description" Text, @@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS "issues" ( "start_date" DateTime, "target_date" DateTime, "completed_at" DateTime, - "parent_issue_id" Integer, + "parent_issue_id" Integer REFERENCES "issues"("id"), "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" DateTime, "deleted_at" DateTime, diff --git a/internal/db/migrations/2026_01_01_000002_create_issue_labels_table.sql b/internal/db/migrations/2026_01_01_000002_create_issue_labels_table.sql index f259218..7c86325 100644 --- a/internal/db/migrations/2026_01_01_000002_create_issue_labels_table.sql +++ b/internal/db/migrations/2026_01_01_000002_create_issue_labels_table.sql @@ -3,9 +3,9 @@ -- CREATE TABLE "issue_labels" --------------------------------- CREATE TABLE IF NOT EXISTS "issue_labels" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "issue_id" Integer NOT NULL, - "project_label_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "issue_id" Integer NOT NULL REFERENCES "issues"("id"), + "project_label_id" Integer NOT NULL REFERENCES "project_labels"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted_at" DateTime, CONSTRAINT "idx_issue_labels" UNIQUE ( issue_id, project_label_id ) ); diff --git a/internal/db/migrations/2026_01_01_000003_create_issue_links_table.sql b/internal/db/migrations/2026_01_01_000003_create_issue_links_table.sql index 3587718..051507e 100644 --- a/internal/db/migrations/2026_01_01_000003_create_issue_links_table.sql +++ b/internal/db/migrations/2026_01_01_000003_create_issue_links_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "issue_links" ---------------------------------- CREATE TABLE IF NOT EXISTS "issue_links" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "issue_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "issue_id" Integer NOT NULL REFERENCES "issues"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "remote_url" Text NOT NULL, "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted_at" DateTime diff --git a/internal/db/migrations/2026_01_01_000004_create_issue_attachments_table.sql b/internal/db/migrations/2026_01_01_000004_create_issue_attachments_table.sql index 56e6dc1..4ad45ef 100644 --- a/internal/db/migrations/2026_01_01_000004_create_issue_attachments_table.sql +++ b/internal/db/migrations/2026_01_01_000004_create_issue_attachments_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "issue_attachments" ---------------------------- CREATE TABLE IF NOT EXISTS "issue_attachments" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "issue_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "issue_id" Integer NOT NULL REFERENCES "issues"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "path" TEXT NOT NULL, "preview_path" TEXT NOT NULL, "filesize" Integer NOT NULL DEFAULT 0, diff --git a/internal/db/migrations/2026_01_01_000005_create_issue_blockers_table.sql b/internal/db/migrations/2026_01_01_000005_create_issue_blockers_table.sql index c75252a..4019116 100644 --- a/internal/db/migrations/2026_01_01_000005_create_issue_blockers_table.sql +++ b/internal/db/migrations/2026_01_01_000005_create_issue_blockers_table.sql @@ -2,8 +2,8 @@ -- CREATE TABLE "issue_blockers" ------------------------------- CREATE TABLE IF NOT EXISTS "issue_blockers" ( - "source_issue_id" Integer NOT NULL, - "blocking_issue_id" Integer NOT NULL, + "source_issue_id" Integer NOT NULL REFERENCES "issues"("id"), + "blocking_issue_id" Integer NOT NULL REFERENCES "issues"("id"), "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "idx_blocking_issue" UNIQUE ( source_issue_id, blocking_issue_id ) ); diff --git a/internal/db/migrations/2026_01_01_000105_create_issue_comments_table.sql b/internal/db/migrations/2026_01_01_000105_create_issue_comments_table.sql index 1636d66..445a9e7 100644 --- a/internal/db/migrations/2026_01_01_000105_create_issue_comments_table.sql +++ b/internal/db/migrations/2026_01_01_000105_create_issue_comments_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "issue_comments" ------------------------------- CREATE TABLE IF NOT EXISTS "issue_comments" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "issue_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "issue_id" Integer NOT NULL REFERENCES "issues"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "body" TEXT NOT NULL, "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" DateTime, diff --git a/internal/db/migrations/2026_01_01_000106_create_issue_comment_links_table.sql b/internal/db/migrations/2026_01_01_000106_create_issue_comment_links_table.sql index 2f19ddd..2fda288 100644 --- a/internal/db/migrations/2026_01_01_000106_create_issue_comment_links_table.sql +++ b/internal/db/migrations/2026_01_01_000106_create_issue_comment_links_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "issue_comment_links" -------------------------- CREATE TABLE IF NOT EXISTS "issue_comment_links" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "issue_comment_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "issue_comment_id" Integer NOT NULL REFERENCES "issue_comments"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "remote_url" Text NOT NULL, "created_at" DateTime NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted_at" DateTime diff --git a/internal/db/migrations/2026_01_01_000107_create_issue_comment_attachments_table.sql b/internal/db/migrations/2026_01_01_000107_create_issue_comment_attachments_table.sql index a39b4be..ee5c781 100644 --- a/internal/db/migrations/2026_01_01_000107_create_issue_comment_attachments_table.sql +++ b/internal/db/migrations/2026_01_01_000107_create_issue_comment_attachments_table.sql @@ -3,8 +3,8 @@ -- CREATE TABLE "issue_comment_attachments" -------------------------- CREATE TABLE IF NOT EXISTS "issue_comment_attachments" ( "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT, - "issue_comment_id" Integer NOT NULL, - "user_id" Integer NOT NULL, + "issue_comment_id" Integer NOT NULL REFERENCES "issue_comments"("id"), + "user_id" Integer NOT NULL REFERENCES "users"("id"), "path" TEXT NOT NULL, "preview_path" TEXT NOT NULL, "filesize" Integer NOT NULL DEFAULT 0,