Files
buzz/migrations/0002_git_repo_names.sql
T
cls 9dfa06ffee
Docker image / Build (linux/amd64) (push) Has been cancelled
Docker image / Build (linux/arm64) (push) Has been cancelled
Docker image / Merge release multi-arch manifest (push) Has been cancelled
Docker image / Merge debug multi-arch manifest (push) Has been cancelled
Docker image / Build public push gateway (linux/amd64) (push) Has been cancelled
Docker image / Build public push gateway (linux/arm64) (push) Has been cancelled
Docker image / Publish public push gateway image (push) Has been cancelled
Sprig image / Build (linux/amd64) (push) Has been cancelled
Sprig image / Build (linux/arm64) (push) Has been cancelled
Sprig image / Merge multi-arch manifest (push) Has been cancelled
Harbor Buzz Orchestra / Python tests and lint (push) Has been cancelled
CI / Detect Changed Paths (push) Has been cancelled
CI / Rust Lint (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Desktop Core (push) Has been cancelled
CI / Desktop Smoke E2E (1) (push) Has been cancelled
CI / Desktop Smoke E2E (2) (push) Has been cancelled
CI / Desktop Smoke E2E (3) (push) Has been cancelled
CI / Desktop Smoke E2E (4) (push) Has been cancelled
CI / Desktop (push) Has been cancelled
CI / Desktop E2E Relay (push) Has been cancelled
CI / Desktop E2E Integration (1/2) (push) Has been cancelled
CI / Desktop E2E Integration (2/2) (push) Has been cancelled
CI / Desktop E2E Integration (push) Has been cancelled
CI / Backend Integration (relay e2e) (push) Has been cancelled
CI / Relay E2E (push) Has been cancelled
CI / Web (push) Has been cancelled
CI / Mobile (push) Has been cancelled
CI / Security (push) Has been cancelled
CI / Dead Token Reference Guard (push) Has been cancelled
CI / Server Cross-Compile (aarch64-unknown-linux-musl) (push) Has been cancelled
CI / Server Cross-Compile (x86_64-unknown-linux-musl) (push) Has been cancelled
CI / Windows Rust (x86_64-pc-windows-msvc) (push) Has been cancelled
CI / Desktop Build (macOS) (push) Has been cancelled
helm chart / lint + unittest + render matrix (push) Has been cancelled
helm chart / install on kind (gated) (push) Has been cancelled
helm chart / publish chart to GHCR (push) Has been cancelled
Mesh Lifecycle / Relay-Driven Mesh Lifecycle Smoke (push) Has been cancelled
Sprig / Build (aarch64-unknown-linux-musl) (push) Has been cancelled
Sprig / Build (x86_64-unknown-linux-musl) (push) Has been cancelled
Sprig / Publish rolling release (push) Has been cancelled
Sprig / Publish tagged release (push) Has been cancelled
feat: import Chinese-localized Buzz source snapshot
Signed-off-by: cls_宁波本机 <908705107@qq.com>
2026-08-13 18:34:25 +08:00

30 lines
1.6 KiB
SQL

-- ── Git repo name registry (NIP-34 kind:30617) ───────────────────────────────
-- The relay holds no persistent per-repo filesystem state: git reads/writes
-- hydrate an ephemeral bare repo from object storage per request, and writer
-- serialization is the object-store pointer CAS (docs/git-on-object-storage.md,
-- Inv_NoFork). This table is the one remaining shared-state need — repo-name
-- uniqueness — moved off local disk so the relay is stateless and can run
-- multiple replicas without a ReadWriteMany volume.
--
-- Additive migration (not folded into 0001): brownfield databases that already
-- applied the pre-PR 0001 must not see its checksum change, or sqlx aborts
-- startup with a VersionMismatch. New table + index only; no edits to existing
-- objects.
--
-- Per-community, not global: a repo name is unique within a community, matching
-- the multi-tenant invariant (community_id leads the PK). The PK enforces
-- uniqueness atomically (INSERT … ON CONFLICT), replacing the old atomic
-- `create_dir`. `owner_pubkey` distinguishes idempotent re-announce (same owner)
-- from collision (different owner), and backs the per-pubkey quota via COUNT.
CREATE TABLE git_repo_names (
community_id UUID NOT NULL REFERENCES communities(id),
repo_id TEXT NOT NULL,
owner_pubkey TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (community_id, repo_id)
);
-- Backs the per-pubkey repo quota: COUNT(*) WHERE community_id = $1 AND owner_pubkey = $2.
CREATE INDEX idx_git_repo_names_owner ON git_repo_names (community_id, owner_pubkey);