diff options
| author | soryu <soryu@soryu.co> | 2026-02-15 01:00:13 +0000 |
|---|---|---|
| committer | soryu <soryu@soryu.co> | 2026-02-15 01:00:13 +0000 |
| commit | 33a16597aaca4179707d66e5052d4512218627c6 (patch) | |
| tree | ce5bbf6f9ec1b1ab4bc2568a21fb4cf5dd0f9dd0 | |
| parent | 9aadbc7958d39d181c0dd0600e2b7c30bb6c391a (diff) | |
| download | soryu-33a16597aaca4179707d66e5052d4512218627c6.tar.gz soryu-33a16597aaca4179707d66e5052d4512218627c6.zip | |
Fixup: override order table
| -rw-r--r-- | makima/migrations/20260214000000_create_orders.sql | 10 | ||||
| -rw-r--r-- | makima/migrations/20260215000000_create_orders.sql | 38 |
2 files changed, 43 insertions, 5 deletions
diff --git a/makima/migrations/20260214000000_create_orders.sql b/makima/migrations/20260214000000_create_orders.sql index cb2fbae..cbccbe1 100644 --- a/makima/migrations/20260214000000_create_orders.sql +++ b/makima/migrations/20260214000000_create_orders.sql @@ -2,7 +2,7 @@ -- Orders represent planned work items (features, bugs, spikes) that can later be -- attached to directives (as steps) or contracts for execution. -CREATE TABLE orders ( +CREATE TABLE IF NOT EXISTS orders ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), owner_id UUID NOT NULL REFERENCES owners(id) ON DELETE CASCADE, title VARCHAR(500) NOT NULL, @@ -29,10 +29,10 @@ CREATE TABLE orders ( ); -- Index for listing orders by owner -CREATE INDEX idx_orders_owner_id ON orders(owner_id); +CREATE INDEX IF NOT EXISTS idx_orders_owner_id ON orders(owner_id); -- Composite index for filtering by owner + status (common query pattern) -CREATE INDEX idx_orders_owner_status ON orders(owner_id, status); +CREATE INDEX IF NOT EXISTS idx_orders_owner_status ON orders(owner_id, status); -- Index for looking up orders linked to a directive -CREATE INDEX idx_orders_directive_id ON orders(directive_id); +CREATE INDEX IF NOT EXISTS idx_orders_directive_id ON orders(directive_id); -- Index for looking up orders linked to a contract -CREATE INDEX idx_orders_contract_id ON orders(contract_id); +CREATE INDEX IF NOT EXISTS idx_orders_contract_id ON orders(contract_id); diff --git a/makima/migrations/20260215000000_create_orders.sql b/makima/migrations/20260215000000_create_orders.sql new file mode 100644 index 0000000..d134801 --- /dev/null +++ b/makima/migrations/20260215000000_create_orders.sql @@ -0,0 +1,38 @@ +-- Orders system: card-based issue tracker (similar to Linear/Jira/GitHub Issues). +-- Orders represent planned work items (features, bugs, spikes) that can later be +-- attached to directives (as steps) or contracts for execution. + +CREATE TABLE orders ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + owner_id UUID NOT NULL REFERENCES owners(id) ON DELETE CASCADE, + title VARCHAR(500) NOT NULL, + description TEXT, + -- Priority: critical > high > medium > low > none + priority VARCHAR(32) NOT NULL DEFAULT 'medium' + CHECK (priority IN ('critical', 'high', 'medium', 'low', 'none')), + -- Status lifecycle: open -> in_progress -> done | archived + status VARCHAR(32) NOT NULL DEFAULT 'open' + CHECK (status IN ('open', 'in_progress', 'done', 'archived')), + -- Type of work item + order_type VARCHAR(32) NOT NULL DEFAULT 'feature' + CHECK (order_type IN ('feature', 'bug', 'spike', 'chore', 'improvement')), + -- Flexible labels stored as JSON array of strings + labels JSONB NOT NULL DEFAULT '[]', + -- Optional links to directives, directive steps, and contracts + directive_id UUID REFERENCES directives(id) ON DELETE SET NULL, + directive_step_id UUID REFERENCES directive_steps(id) ON DELETE SET NULL, + contract_id UUID REFERENCES contracts(id) ON DELETE SET NULL, + -- Repository context + repository_url VARCHAR(512), + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() +); + +-- Index for listing orders by owner +CREATE INDEX IF NOT EXISTS idx_orders_owner_id ON orders(owner_id); +-- Composite index for filtering by owner + status (common query pattern) +CREATE INDEX IF NOT EXISTS idx_orders_owner_status ON orders(owner_id, status); +-- Index for looking up orders linked to a directive +CREATE INDEX IF NOT EXISTS idx_orders_directive_id ON orders(directive_id); +-- Index for looking up orders linked to a contract +CREATE INDEX IF NOT EXISTS idx_orders_contract_id ON orders(contract_id); |
