blob: 5be8cf299cdd9ba03d79ed5e16aca7a8f87c5940 (
plain) (
blame)
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
|
-- Chain repositories - allow chains to have multiple repositories
-- Similar to contract_repositories but for chains
CREATE TABLE IF NOT EXISTS chain_repositories (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
chain_id UUID NOT NULL REFERENCES chains(id) ON DELETE CASCADE,
name VARCHAR(255) NOT NULL, -- display name / repo name
repository_url VARCHAR(512), -- NULL for local repos
local_path VARCHAR(512), -- local filesystem path (for local repos)
source_type VARCHAR(32) NOT NULL DEFAULT 'remote', -- remote/local/managed
status VARCHAR(32) NOT NULL DEFAULT 'ready', -- ready/pending/creating/failed
is_primary BOOLEAN NOT NULL DEFAULT false, -- primary repo for contract defaults
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- source_type values:
-- 'remote' = existing remote repo (GitHub, GitLab, etc) - has repository_url
-- 'local' = existing local repo - has local_path
-- 'managed' = new repo created/managed by Makima daemon - gets repository_url after creation
CREATE INDEX idx_chain_repositories_chain_id ON chain_repositories(chain_id);
-- Only one primary per chain
CREATE UNIQUE INDEX idx_chain_repositories_primary ON chain_repositories(chain_id) WHERE is_primary = true;
-- Remove the old single repository fields from chains table (they're now in chain_repositories)
ALTER TABLE chains DROP COLUMN IF EXISTS repository_url;
ALTER TABLE chains DROP COLUMN IF EXISTS local_path;
|