frm/db/migrations/20250110190628_add_form_submissions.up.sql
2025-01-23 07:31:12 -07:00

28 lines
1.2 KiB
SQL

-- create the submissions pk sequence
CREATE SEQUENCE IF NOT EXISTS submission_ids START 1;
-- create form statuses enum
CREATE TYPE submission_status AS ENUM (
'complete',
'partial'
);
-- submissions of forms/fields to the collector
CREATE TABLE IF NOT EXISTS form_submissions (
id BIGINT PRIMARY KEY DEFAULT nextval('submission_ids'),
form_id BIGINT REFERENCES forms(id) ON DELETE CASCADE NOT NULL ,
workspace_id TEXT NOT NULL,
subject_id TEXT DEFAULT NULL,
fields jsonb default '{}' NOT NULL,
status submission_status default 'partial' NOT NULL,
created_at timestamptz not null default timezone('utc', now()),
updated_at timestamptz not null default timezone('utc', now())
);
CREATE INDEX IF NOT EXISTS workspace_idx ON form_submissions USING btree (workspace_id);
CREATE INDEX IF NOT EXISTS form_idx ON form_submissions USING btree (form_id);
COMMENT ON table form_submissions IS 'Respondants submit forms/fields to the collector as form_submissions';
COMMENT ON column form_submissions.fields IS 'all form submissions are serialized to JSON, see types.FormFieldValue for structure details';
COMMENT ON column form_submissions.subject_id IS 'identifies the subject/respondent who filled out the form';