diff --git a/persistence/src/main/resources/db/changelog/migrations/008_create_feedback_tables.sql b/persistence/src/main/resources/db/changelog/migrations/008_create_feedback_tables.sql index dc0268d..9817818 100644 --- a/persistence/src/main/resources/db/changelog/migrations/008_create_feedback_tables.sql +++ b/persistence/src/main/resources/db/changelog/migrations/008_create_feedback_tables.sql @@ -10,6 +10,8 @@ CREATE TABLE IF NOT EXISTS feedback_submissions ( client_id UUID NOT NULL, client_app_registration_id UUID NOT NULL, client_name VARCHAR(255) NOT NULL, + project_id UUID NOT NULL, + project_key VARCHAR(100) NOT NULL, submitter VARCHAR(255), submitted_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), questions JSONB NOT NULL, @@ -18,6 +20,10 @@ CREATE TABLE IF NOT EXISTS feedback_submissions ( FOREIGN KEY (client_id) REFERENCES client_apps (id) ON DELETE RESTRICT, + CONSTRAINT fk_feedback_submissions_project + FOREIGN KEY (project_id) + REFERENCES projects (id) + ON DELETE RESTRICT, CONSTRAINT chk_feedback_submissions_questions_array CHECK (COALESCE(jsonb_typeof(questions) = 'array', FALSE)), CONSTRAINT chk_feedback_submissions_answers_object @@ -30,12 +36,17 @@ CREATE INDEX IF NOT EXISTS idx_feedback_submissions_client_id CREATE INDEX IF NOT EXISTS idx_feedback_submissions_client_app_registration_id ON feedback_submissions (client_app_registration_id); +CREATE INDEX IF NOT EXISTS idx_feedback_submissions_project_key + ON feedback_submissions (project_key); + COMMENT ON TABLE feedback_submissions IS 'Questionnaire submissions with question and answer snapshots'; COMMENT ON COLUMN feedback_submissions.client_app_registration_id IS 'Azure Application registration ID (client_id), captured at submission time'; COMMENT ON COLUMN feedback_submissions.client_name IS 'Denormalized client application name captured at submission time'; +COMMENT ON COLUMN feedback_submissions.project_key + IS 'Denormalized project key captured at submission time'; COMMENT ON COLUMN feedback_submissions.questions IS 'Questionnaire definition shown to the submitter, stored as a JSON array'; COMMENT ON COLUMN feedback_submissions.answers