Files
appks/migrate/012_release_assets_pr_enhancements.sql
zhenyi d6c468a9fc feat(db): add sqlx migrate feature and renumber migration files
- Add 'migrate' feature to sqlx dependency
- Renumber migrations to fix duplicate version numbers (two 014 files)
- Re-sequence migrations 009-012 for continuous ordering
- Add ALTER TABLE ADD COLUMN IF NOT EXISTS baseline for notification
  table to handle existing databases missing newer columns
- Remove deleted IM migration files (009-012) that were superseded
2026-06-10 18:48:43 +08:00

45 lines
2.1 KiB
SQL

-- Release Assets - binary attachments for releases
CREATE TABLE IF NOT EXISTS repo_release_asset (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
release_id UUID NOT NULL REFERENCES repo_release(id) ON DELETE CASCADE,
filename TEXT NOT NULL,
size_bytes BIGINT NOT NULL,
mime_type TEXT NOT NULL DEFAULT 'application/octet-stream',
storage_path TEXT NOT NULL,
url TEXT,
download_count BIGINT NOT NULL DEFAULT 0,
uploaded_by UUID REFERENCES "user"(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
deleted_at TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_repo_release_asset_release ON repo_release_asset(release_id, deleted_at);
CREATE INDEX IF NOT EXISTS idx_repo_release_asset_deleted ON repo_release_asset(deleted_at) WHERE deleted_at IS NOT NULL;
-- PR Templates (mirrors issue_template structure)
CREATE TABLE IF NOT EXISTS pr_template (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
repo_id UUID NOT NULL REFERENCES repo(id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT,
title_template TEXT,
body_template TEXT NOT NULL DEFAULT '',
labels TEXT[] NOT NULL DEFAULT '{}',
active BOOLEAN NOT NULL DEFAULT true,
created_by UUID REFERENCES "user"(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_pr_template_repo ON pr_template(repo_id);
-- PR Review Requests
CREATE TABLE IF NOT EXISTS pr_review_request (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
pull_request_id UUID NOT NULL REFERENCES pull_request(id) ON DELETE CASCADE,
reviewer_id UUID NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
requested_by UUID NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_pr_review_request_pr ON pr_review_request(pull_request_id);
CREATE UNIQUE INDEX IF NOT EXISTS idx_pr_review_request_pr_reviewer ON pr_review_request(pull_request_id, reviewer_id);