Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@jorge-romero
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
--liquibase formatted sql

-- ============================================================================
-- changeset ods:011-create-feedback-tables
-- Description: Stores feedback questionnaire submissions, including client
-- metadata, the questions shown to the submitter, and their answers.
-- ============================================================================
CREATE TABLE IF NOT EXISTS feedback_submissions (
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
client_id UUID NOT NULL,
client_app_registration_id UUID NOT NULL,
client_name VARCHAR(255) NOT NULL,
submitter VARCHAR(255),
submitted_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
questions JSONB NOT NULL,
answers JSONB NOT NULL,
CONSTRAINT fk_feedback_submissions_client_app
FOREIGN KEY (client_id)
REFERENCES client_apps (id)
ON DELETE RESTRICT,
CONSTRAINT chk_feedback_submissions_questions_array
CHECK (COALESCE(jsonb_typeof(questions) = 'array', FALSE)),
CONSTRAINT chk_feedback_submissions_answers_object
CHECK (COALESCE(jsonb_typeof(answers) = 'object', FALSE))
);

CREATE INDEX IF NOT EXISTS idx_feedback_submissions_client_id
ON feedback_submissions (client_id);

CREATE INDEX IF NOT EXISTS idx_feedback_submissions_client_app_registration_id
ON feedback_submissions (client_app_registration_id);

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.questions
IS 'Questionnaire definition shown to the submitter, stored as a JSON array';
COMMENT ON COLUMN feedback_submissions.answers
IS 'Submitted answers keyed by question and follow-up IDs, stored as a JSON object';

--rollback DROP TABLE IF EXISTS feedback_submissions;
Loading