-- +goose Up
-- Stage 10 admin & dictionary ops: the word-check complaint resolution lifecycle.
-- Stage 3 created complaints with a free-form status (only ever 'open'); the admin
-- review queue (this stage) resolves them with a disposition that also feeds the
-- offline dictionary-rebuild pipeline: an accepted complaint records whether the
-- word should be added or removed, and is marked applied once a rebuilt dictionary
-- version is hot-reloaded. No operator identity is recorded (the gateway gates the
-- console behind Basic-Auth; the backend keeps no admin principal). Adds columns, so
-- the generated jet code is regenerated (cmd/jetgen).
SET search_path = backend, pg_catalog;

ALTER TABLE complaints
    ADD COLUMN disposition        text        NOT NULL DEFAULT '',
    ADD COLUMN resolution_note    text        NOT NULL DEFAULT '',
    ADD COLUMN resolved_at        timestamptz,
    ADD COLUMN applied_in_version text        NOT NULL DEFAULT '',
    ADD CONSTRAINT complaints_status_chk CHECK (status IN ('open', 'resolved')),
    ADD CONSTRAINT complaints_disposition_chk
        CHECK (disposition IN ('', 'reject', 'accept_add', 'accept_remove'));

-- +goose Down
SET search_path = backend, pg_catalog;

ALTER TABLE complaints
    DROP CONSTRAINT complaints_disposition_chk,
    DROP CONSTRAINT complaints_status_chk,
    DROP COLUMN applied_in_version,
    DROP COLUMN resolved_at,
    DROP COLUMN resolution_note,
    DROP COLUMN disposition;
