← back to Visual Factory

sql/001_init.sql

48 lines

-- Visual Factory schema. Standalone PG `visual_factory` DB. NEVER point at dw_unified.
-- Bootstrap: createdb visual_factory && psql -d visual_factory -f sql/001_init.sql

CREATE TABLE IF NOT EXISTS runs (
    id              BIGSERIAL PRIMARY KEY,
    brief           TEXT NOT NULL,
    domain          TEXT,
    purpose         TEXT,
    visual_type     TEXT,
    artifact_name   TEXT,
    status          TEXT NOT NULL DEFAULT 'pending',
    current_stage   INTEGER NOT NULL DEFAULT 0,
    width           INTEGER,
    height          INTEGER,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT now(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT now(),
    finished_at     TIMESTAMPTZ
);

CREATE TABLE IF NOT EXISTS events (
    id              BIGSERIAL PRIMARY KEY,
    run_id          BIGINT NOT NULL REFERENCES runs(id) ON DELETE CASCADE,
    stage           INTEGER NOT NULL,
    stage_name      TEXT NOT NULL,
    level           TEXT NOT NULL DEFAULT 'info',
    message         TEXT,
    payload         JSONB,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT now()
);

CREATE TABLE IF NOT EXISTS artifacts (
    id              BIGSERIAL PRIMARY KEY,
    run_id          BIGINT REFERENCES runs(id) ON DELETE SET NULL,
    visual_type     TEXT NOT NULL,
    artifact_name   TEXT NOT NULL,
    html_path       TEXT,
    png_path        TEXT,
    width           INTEGER,
    height          INTEGER,
    score           INTEGER,
    status          TEXT NOT NULL DEFAULT 'draft',
    published_path  TEXT,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT now()
);

CREATE INDEX IF NOT EXISTS events_run_idx ON events (run_id, stage);
CREATE INDEX IF NOT EXISTS artifacts_name_idx ON artifacts (visual_type, artifact_name);