31 lines
1.2 KiB
SQL
31 lines
1.2 KiB
SQL
-- A prompt_set groups a full collection of prompts together.
|
|
-- Each pipeline can have many sets (versions, A/B variants, etc.);
|
|
-- exactly one should be marked is_active per pipeline.
|
|
CREATE TABLE IF NOT EXISTS prompt_sets (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
pipeline_id VARCHAR(64) NOT NULL,
|
|
name VARCHAR(128) NOT NULL,
|
|
description TEXT DEFAULT '',
|
|
is_active BOOLEAN DEFAULT false,
|
|
created_at TIMESTAMPTZ DEFAULT now(),
|
|
updated_at TIMESTAMPTZ DEFAULT now()
|
|
);
|
|
|
|
-- Fast lookup of the active set for a pipeline
|
|
CREATE INDEX IF NOT EXISTS idx_prompt_sets_pipeline_active
|
|
ON prompt_sets(pipeline_id, is_active);
|
|
|
|
-- Each prompt belongs to a prompt_set, keyed by prompt_key.
|
|
CREATE TABLE IF NOT EXISTS prompt_templates (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
prompt_set_id UUID NOT NULL REFERENCES prompt_sets(id) ON DELETE CASCADE,
|
|
prompt_key VARCHAR(64) NOT NULL,
|
|
content TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT now(),
|
|
updated_at TIMESTAMPTZ DEFAULT now(),
|
|
UNIQUE(prompt_set_id, prompt_key)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_prompt_templates_set_id
|
|
ON prompt_templates(prompt_set_id);
|