mirror of
https://github.com/acaloiaro/frm
synced 2026-07-21 18:29:12 +00:00
28 lines
1.2 KiB
SQL
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';
|