feat(migration): add 0004_form_builder.sql for prod SQL migrator
Extracts forms + form_submissions schema from TS migrations into idempotent SQL so Dockerfile.migrator can apply it on production. Also updates generated payload-types after form-builder plugin. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
85d2f7d16e
commit
fd55afd773
3 changed files with 5605 additions and 0 deletions
358
migrations/0004_form_builder.sql
Normal file
358
migrations/0004_form_builder.sql
Normal file
|
|
@ -0,0 +1,358 @@
|
|||
-- Migration 0004: form-builder plugin tables + form_id on globals
|
||||
-- Extracted from 20260518_104929.ts and 20260518_115657.ts — fully idempotent
|
||||
|
||||
-- Enum types
|
||||
DO $$ BEGIN
|
||||
CREATE TYPE "public"."enum_forms_confirmation_type" AS ENUM('message', 'redirect');
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
CREATE TYPE "public"."enum_forms_redirect_type" AS ENUM('reference', 'custom');
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
-- Block tables
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_checkbox" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"_path" text NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
"label" varchar,
|
||||
"width" numeric,
|
||||
"required" boolean,
|
||||
"default_value" boolean,
|
||||
"block_name" varchar
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_email" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"_path" text NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
"label" varchar,
|
||||
"width" numeric,
|
||||
"required" boolean,
|
||||
"block_name" varchar
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_message" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"_path" text NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"message" jsonb,
|
||||
"block_name" varchar
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_number" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"_path" text NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
"label" varchar,
|
||||
"width" numeric,
|
||||
"default_value" numeric,
|
||||
"required" boolean,
|
||||
"block_name" varchar
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_select_options" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" varchar NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"label" varchar NOT NULL,
|
||||
"value" varchar NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_select" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"_path" text NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
"label" varchar,
|
||||
"width" numeric,
|
||||
"default_value" varchar,
|
||||
"placeholder" varchar,
|
||||
"required" boolean,
|
||||
"block_name" varchar
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_text" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"_path" text NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
"label" varchar,
|
||||
"width" numeric,
|
||||
"default_value" varchar,
|
||||
"required" boolean,
|
||||
"block_name" varchar
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_textarea" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"_path" text NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
"label" varchar,
|
||||
"width" numeric,
|
||||
"default_value" varchar,
|
||||
"required" boolean,
|
||||
"block_name" varchar
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_radio_options" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" varchar NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"label" varchar NOT NULL,
|
||||
"value" varchar NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_radio" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"_path" text NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
"label" varchar,
|
||||
"width" numeric,
|
||||
"default_value" varchar,
|
||||
"required" boolean,
|
||||
"block_name" varchar
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_blocks_date" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"_path" text NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"name" varchar NOT NULL,
|
||||
"label" varchar,
|
||||
"width" numeric,
|
||||
"required" boolean,
|
||||
"default_value" timestamp(3) with time zone,
|
||||
"block_name" varchar
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_emails" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"email_to" varchar,
|
||||
"cc" varchar,
|
||||
"bcc" varchar,
|
||||
"reply_to" varchar,
|
||||
"email_from" varchar,
|
||||
"subject" varchar DEFAULT 'You''ve received a new message.' NOT NULL,
|
||||
"message" jsonb
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"title" varchar NOT NULL,
|
||||
"submit_button_label" varchar,
|
||||
"confirmation_type" "enum_forms_confirmation_type" DEFAULT 'message',
|
||||
"confirmation_message" jsonb,
|
||||
"redirect_type" "enum_forms_redirect_type" DEFAULT 'reference',
|
||||
"redirect_url" varchar,
|
||||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "forms_rels" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"order" integer,
|
||||
"parent_id" integer NOT NULL,
|
||||
"path" varchar NOT NULL,
|
||||
"pages_id" integer
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "form_submissions_submission_data" (
|
||||
"_order" integer NOT NULL,
|
||||
"_parent_id" integer NOT NULL,
|
||||
"id" varchar PRIMARY KEY NOT NULL,
|
||||
"field" varchar NOT NULL,
|
||||
"value" varchar NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "form_submissions" (
|
||||
"id" serial PRIMARY KEY NOT NULL,
|
||||
"form_id" integer NOT NULL,
|
||||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||||
);
|
||||
|
||||
-- FK constraints on block tables
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_checkbox" ADD CONSTRAINT "forms_blocks_checkbox_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_email" ADD CONSTRAINT "forms_blocks_email_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_message" ADD CONSTRAINT "forms_blocks_message_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_number" ADD CONSTRAINT "forms_blocks_number_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_select_options" ADD CONSTRAINT "forms_blocks_select_options_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms_blocks_select"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_select" ADD CONSTRAINT "forms_blocks_select_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_text" ADD CONSTRAINT "forms_blocks_text_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_textarea" ADD CONSTRAINT "forms_blocks_textarea_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_radio_options" ADD CONSTRAINT "forms_blocks_radio_options_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms_blocks_radio"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_radio" ADD CONSTRAINT "forms_blocks_radio_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_blocks_date" ADD CONSTRAINT "forms_blocks_date_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_emails" ADD CONSTRAINT "forms_emails_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_rels" ADD CONSTRAINT "forms_rels_parent_fk"
|
||||
FOREIGN KEY ("parent_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "forms_rels" ADD CONSTRAINT "forms_rels_pages_fk"
|
||||
FOREIGN KEY ("pages_id") REFERENCES "public"."pages"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "form_submissions_submission_data" ADD CONSTRAINT "form_submissions_submission_data_parent_id_fk"
|
||||
FOREIGN KEY ("_parent_id") REFERENCES "public"."form_submissions"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "form_submissions" ADD CONSTRAINT "form_submissions_form_id_forms_id_fk"
|
||||
FOREIGN KEY ("form_id") REFERENCES "public"."forms"("id") ON DELETE set null ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
-- payload_locked_documents_rels columns
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN IF NOT EXISTS "forms_id" integer;
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD COLUMN IF NOT EXISTS "form_submissions_id" integer;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_forms_fk"
|
||||
FOREIGN KEY ("forms_id") REFERENCES "public"."forms"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_form_submissions_fk"
|
||||
FOREIGN KEY ("form_submissions_id") REFERENCES "public"."form_submissions"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
-- Indexes
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_checkbox_order_idx" ON "forms_blocks_checkbox" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_checkbox_parent_id_idx" ON "forms_blocks_checkbox" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_checkbox_path_idx" ON "forms_blocks_checkbox" USING btree ("_path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_email_order_idx" ON "forms_blocks_email" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_email_parent_id_idx" ON "forms_blocks_email" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_email_path_idx" ON "forms_blocks_email" USING btree ("_path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_message_order_idx" ON "forms_blocks_message" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_message_parent_id_idx" ON "forms_blocks_message" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_message_path_idx" ON "forms_blocks_message" USING btree ("_path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_number_order_idx" ON "forms_blocks_number" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_number_parent_id_idx" ON "forms_blocks_number" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_number_path_idx" ON "forms_blocks_number" USING btree ("_path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_select_options_order_idx" ON "forms_blocks_select_options" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_select_options_parent_id_idx" ON "forms_blocks_select_options" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_select_order_idx" ON "forms_blocks_select" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_select_parent_id_idx" ON "forms_blocks_select" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_select_path_idx" ON "forms_blocks_select" USING btree ("_path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_text_order_idx" ON "forms_blocks_text" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_text_parent_id_idx" ON "forms_blocks_text" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_text_path_idx" ON "forms_blocks_text" USING btree ("_path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_textarea_order_idx" ON "forms_blocks_textarea" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_textarea_parent_id_idx" ON "forms_blocks_textarea" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_textarea_path_idx" ON "forms_blocks_textarea" USING btree ("_path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_radio_options_order_idx" ON "forms_blocks_radio_options" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_radio_options_parent_id_idx" ON "forms_blocks_radio_options" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_radio_order_idx" ON "forms_blocks_radio" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_radio_parent_id_idx" ON "forms_blocks_radio" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_radio_path_idx" ON "forms_blocks_radio" USING btree ("_path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_date_order_idx" ON "forms_blocks_date" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_date_parent_id_idx" ON "forms_blocks_date" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_blocks_date_path_idx" ON "forms_blocks_date" USING btree ("_path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_emails_order_idx" ON "forms_emails" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_emails_parent_id_idx" ON "forms_emails" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_updated_at_idx" ON "forms" USING btree ("updated_at");
|
||||
CREATE INDEX IF NOT EXISTS "forms_created_at_idx" ON "forms" USING btree ("created_at");
|
||||
CREATE INDEX IF NOT EXISTS "forms_rels_order_idx" ON "forms_rels" USING btree ("order");
|
||||
CREATE INDEX IF NOT EXISTS "forms_rels_parent_idx" ON "forms_rels" USING btree ("parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "forms_rels_path_idx" ON "forms_rels" USING btree ("path");
|
||||
CREATE INDEX IF NOT EXISTS "forms_rels_pages_id_idx" ON "forms_rels" USING btree ("pages_id");
|
||||
CREATE INDEX IF NOT EXISTS "form_submissions_submission_data_order_idx" ON "form_submissions_submission_data" USING btree ("_order");
|
||||
CREATE INDEX IF NOT EXISTS "form_submissions_submission_data_parent_id_idx" ON "form_submissions_submission_data" USING btree ("_parent_id");
|
||||
CREATE INDEX IF NOT EXISTS "form_submissions_form_idx" ON "form_submissions" USING btree ("form_id");
|
||||
CREATE INDEX IF NOT EXISTS "form_submissions_updated_at_idx" ON "form_submissions" USING btree ("updated_at");
|
||||
CREATE INDEX IF NOT EXISTS "form_submissions_created_at_idx" ON "form_submissions" USING btree ("created_at");
|
||||
CREATE INDEX IF NOT EXISTS "payload_locked_documents_rels_forms_id_idx" ON "payload_locked_documents_rels" USING btree ("forms_id");
|
||||
CREATE INDEX IF NOT EXISTS "payload_locked_documents_rels_form_submissions_id_idx" ON "payload_locked_documents_rels" USING btree ("form_submissions_id");
|
||||
|
||||
-- form_id columns on globals (requires forms table to exist first)
|
||||
ALTER TABLE "group_visits_page" ADD COLUMN IF NOT EXISTS "form_id" integer;
|
||||
ALTER TABLE "_group_visits_page_v" ADD COLUMN IF NOT EXISTS "version_form_id" integer;
|
||||
ALTER TABLE "birthday_page" ADD COLUMN IF NOT EXISTS "form_id" integer;
|
||||
ALTER TABLE "_birthday_page_v" ADD COLUMN IF NOT EXISTS "version_form_id" integer;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "group_visits_page" ADD CONSTRAINT "group_visits_page_form_id_forms_id_fk"
|
||||
FOREIGN KEY ("form_id") REFERENCES "forms"("id") ON DELETE SET NULL;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "_group_visits_page_v" ADD CONSTRAINT "_group_visits_page_v_form_id_forms_id_fk"
|
||||
FOREIGN KEY ("version_form_id") REFERENCES "forms"("id") ON DELETE SET NULL;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "birthday_page" ADD CONSTRAINT "birthday_page_form_id_forms_id_fk"
|
||||
FOREIGN KEY ("form_id") REFERENCES "forms"("id") ON DELETE SET NULL;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "_birthday_page_v" ADD CONSTRAINT "_birthday_page_v_form_id_forms_id_fk"
|
||||
FOREIGN KEY ("version_form_id") REFERENCES "forms"("id") ON DELETE SET NULL;
|
||||
EXCEPTION WHEN duplicate_object THEN null; END $$;
|
||||
4860
src/payload-generated-schema.ts
Normal file
4860
src/payload-generated-schema.ts
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -33,6 +33,8 @@ export interface Config {
|
|||
reviews: Review
|
||||
'birthday-packages': BirthdayPackage
|
||||
redirects: Redirect
|
||||
forms: Form
|
||||
'form-submissions': FormSubmission
|
||||
'payload-kv': PayloadKv
|
||||
'payload-locked-documents': PayloadLockedDocument
|
||||
'payload-preferences': PayloadPreference
|
||||
|
|
@ -53,6 +55,8 @@ export interface Config {
|
|||
reviews: ReviewsSelect<false> | ReviewsSelect<true>
|
||||
'birthday-packages': BirthdayPackagesSelect<false> | BirthdayPackagesSelect<true>
|
||||
redirects: RedirectsSelect<false> | RedirectsSelect<true>
|
||||
forms: FormsSelect<false> | FormsSelect<true>
|
||||
'form-submissions': FormSubmissionsSelect<false> | FormSubmissionsSelect<true>
|
||||
'payload-kv': PayloadKvSelect<false> | PayloadKvSelect<true>
|
||||
'payload-locked-documents':
|
||||
| PayloadLockedDocumentsSelect<false>
|
||||
|
|
@ -653,6 +657,211 @@ export interface Redirect {
|
|||
updatedAt: string
|
||||
createdAt: string
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "forms".
|
||||
*/
|
||||
export interface Form {
|
||||
id: number
|
||||
title: string
|
||||
fields?:
|
||||
| (
|
||||
| {
|
||||
name: string
|
||||
label?: string | null
|
||||
width?: number | null
|
||||
required?: boolean | null
|
||||
defaultValue?: boolean | null
|
||||
id?: string | null
|
||||
blockName?: string | null
|
||||
blockType: 'checkbox'
|
||||
}
|
||||
| {
|
||||
name: string
|
||||
label?: string | null
|
||||
width?: number | null
|
||||
required?: boolean | null
|
||||
id?: string | null
|
||||
blockName?: string | null
|
||||
blockType: 'email'
|
||||
}
|
||||
| {
|
||||
message?: {
|
||||
root: {
|
||||
type: string
|
||||
children: {
|
||||
type: any
|
||||
version: number
|
||||
[k: string]: unknown
|
||||
}[]
|
||||
direction: ('ltr' | 'rtl') | null
|
||||
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''
|
||||
indent: number
|
||||
version: number
|
||||
}
|
||||
[k: string]: unknown
|
||||
} | null
|
||||
id?: string | null
|
||||
blockName?: string | null
|
||||
blockType: 'message'
|
||||
}
|
||||
| {
|
||||
name: string
|
||||
label?: string | null
|
||||
width?: number | null
|
||||
defaultValue?: number | null
|
||||
required?: boolean | null
|
||||
id?: string | null
|
||||
blockName?: string | null
|
||||
blockType: 'number'
|
||||
}
|
||||
| {
|
||||
name: string
|
||||
label?: string | null
|
||||
width?: number | null
|
||||
defaultValue?: string | null
|
||||
placeholder?: string | null
|
||||
options?:
|
||||
| {
|
||||
label: string
|
||||
value: string
|
||||
id?: string | null
|
||||
}[]
|
||||
| null
|
||||
required?: boolean | null
|
||||
id?: string | null
|
||||
blockName?: string | null
|
||||
blockType: 'select'
|
||||
}
|
||||
| {
|
||||
name: string
|
||||
label?: string | null
|
||||
width?: number | null
|
||||
defaultValue?: string | null
|
||||
required?: boolean | null
|
||||
id?: string | null
|
||||
blockName?: string | null
|
||||
blockType: 'text'
|
||||
}
|
||||
| {
|
||||
name: string
|
||||
label?: string | null
|
||||
width?: number | null
|
||||
defaultValue?: string | null
|
||||
required?: boolean | null
|
||||
id?: string | null
|
||||
blockName?: string | null
|
||||
blockType: 'textarea'
|
||||
}
|
||||
| {
|
||||
name: string
|
||||
label?: string | null
|
||||
width?: number | null
|
||||
defaultValue?: string | null
|
||||
options?:
|
||||
| {
|
||||
label: string
|
||||
value: string
|
||||
id?: string | null
|
||||
}[]
|
||||
| null
|
||||
required?: boolean | null
|
||||
id?: string | null
|
||||
blockName?: string | null
|
||||
blockType: 'radio'
|
||||
}
|
||||
| {
|
||||
name: string
|
||||
label?: string | null
|
||||
width?: number | null
|
||||
required?: boolean | null
|
||||
defaultValue?: string | null
|
||||
id?: string | null
|
||||
blockName?: string | null
|
||||
blockType: 'date'
|
||||
}
|
||||
)[]
|
||||
| null
|
||||
submitButtonLabel?: string | null
|
||||
/**
|
||||
* Choose whether to display an on-page message or redirect to a different page after they submit the form.
|
||||
*/
|
||||
confirmationType?: ('message' | 'redirect') | null
|
||||
confirmationMessage?: {
|
||||
root: {
|
||||
type: string
|
||||
children: {
|
||||
type: any
|
||||
version: number
|
||||
[k: string]: unknown
|
||||
}[]
|
||||
direction: ('ltr' | 'rtl') | null
|
||||
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''
|
||||
indent: number
|
||||
version: number
|
||||
}
|
||||
[k: string]: unknown
|
||||
} | null
|
||||
redirect?: {
|
||||
type?: ('reference' | 'custom') | null
|
||||
reference?: {
|
||||
relationTo: 'pages'
|
||||
value: number | Page
|
||||
} | null
|
||||
url?: string | null
|
||||
}
|
||||
/**
|
||||
* Send custom emails when the form submits. Use comma separated lists to send the same email to multiple recipients. To reference a value from this form, wrap that field's name with double curly brackets, i.e. {{firstName}}. You can use a wildcard {{*}} to output all data and {{*:table}} to format it as an HTML table in the email.
|
||||
*/
|
||||
emails?:
|
||||
| {
|
||||
emailTo?: string | null
|
||||
cc?: string | null
|
||||
bcc?: string | null
|
||||
replyTo?: string | null
|
||||
emailFrom?: string | null
|
||||
subject: string
|
||||
/**
|
||||
* Enter the message that should be sent in this email.
|
||||
*/
|
||||
message?: {
|
||||
root: {
|
||||
type: string
|
||||
children: {
|
||||
type: any
|
||||
version: number
|
||||
[k: string]: unknown
|
||||
}[]
|
||||
direction: ('ltr' | 'rtl') | null
|
||||
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''
|
||||
indent: number
|
||||
version: number
|
||||
}
|
||||
[k: string]: unknown
|
||||
} | null
|
||||
id?: string | null
|
||||
}[]
|
||||
| null
|
||||
updatedAt: string
|
||||
createdAt: string
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "form-submissions".
|
||||
*/
|
||||
export interface FormSubmission {
|
||||
id: number
|
||||
form: number | Form
|
||||
submissionData?:
|
||||
| {
|
||||
field: string
|
||||
value: string
|
||||
id?: string | null
|
||||
}[]
|
||||
| null
|
||||
updatedAt: string
|
||||
createdAt: string
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "payload-kv".
|
||||
|
|
@ -729,6 +938,14 @@ export interface PayloadLockedDocument {
|
|||
relationTo: 'redirects'
|
||||
value: number | Redirect
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'forms'
|
||||
value: number | Form
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'form-submissions'
|
||||
value: number | FormSubmission
|
||||
} | null)
|
||||
globalSlug?: string | null
|
||||
user: {
|
||||
relationTo: 'users'
|
||||
|
|
@ -1202,6 +1419,166 @@ export interface RedirectsSelect<T extends boolean = true> {
|
|||
updatedAt?: T
|
||||
createdAt?: T
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "forms_select".
|
||||
*/
|
||||
export interface FormsSelect<T extends boolean = true> {
|
||||
title?: T
|
||||
fields?:
|
||||
| T
|
||||
| {
|
||||
checkbox?:
|
||||
| T
|
||||
| {
|
||||
name?: T
|
||||
label?: T
|
||||
width?: T
|
||||
required?: T
|
||||
defaultValue?: T
|
||||
id?: T
|
||||
blockName?: T
|
||||
}
|
||||
email?:
|
||||
| T
|
||||
| {
|
||||
name?: T
|
||||
label?: T
|
||||
width?: T
|
||||
required?: T
|
||||
id?: T
|
||||
blockName?: T
|
||||
}
|
||||
message?:
|
||||
| T
|
||||
| {
|
||||
message?: T
|
||||
id?: T
|
||||
blockName?: T
|
||||
}
|
||||
number?:
|
||||
| T
|
||||
| {
|
||||
name?: T
|
||||
label?: T
|
||||
width?: T
|
||||
defaultValue?: T
|
||||
required?: T
|
||||
id?: T
|
||||
blockName?: T
|
||||
}
|
||||
select?:
|
||||
| T
|
||||
| {
|
||||
name?: T
|
||||
label?: T
|
||||
width?: T
|
||||
defaultValue?: T
|
||||
placeholder?: T
|
||||
options?:
|
||||
| T
|
||||
| {
|
||||
label?: T
|
||||
value?: T
|
||||
id?: T
|
||||
}
|
||||
required?: T
|
||||
id?: T
|
||||
blockName?: T
|
||||
}
|
||||
text?:
|
||||
| T
|
||||
| {
|
||||
name?: T
|
||||
label?: T
|
||||
width?: T
|
||||
defaultValue?: T
|
||||
required?: T
|
||||
id?: T
|
||||
blockName?: T
|
||||
}
|
||||
textarea?:
|
||||
| T
|
||||
| {
|
||||
name?: T
|
||||
label?: T
|
||||
width?: T
|
||||
defaultValue?: T
|
||||
required?: T
|
||||
id?: T
|
||||
blockName?: T
|
||||
}
|
||||
radio?:
|
||||
| T
|
||||
| {
|
||||
name?: T
|
||||
label?: T
|
||||
width?: T
|
||||
defaultValue?: T
|
||||
options?:
|
||||
| T
|
||||
| {
|
||||
label?: T
|
||||
value?: T
|
||||
id?: T
|
||||
}
|
||||
required?: T
|
||||
id?: T
|
||||
blockName?: T
|
||||
}
|
||||
date?:
|
||||
| T
|
||||
| {
|
||||
name?: T
|
||||
label?: T
|
||||
width?: T
|
||||
required?: T
|
||||
defaultValue?: T
|
||||
id?: T
|
||||
blockName?: T
|
||||
}
|
||||
}
|
||||
submitButtonLabel?: T
|
||||
confirmationType?: T
|
||||
confirmationMessage?: T
|
||||
redirect?:
|
||||
| T
|
||||
| {
|
||||
type?: T
|
||||
reference?: T
|
||||
url?: T
|
||||
}
|
||||
emails?:
|
||||
| T
|
||||
| {
|
||||
emailTo?: T
|
||||
cc?: T
|
||||
bcc?: T
|
||||
replyTo?: T
|
||||
emailFrom?: T
|
||||
subject?: T
|
||||
message?: T
|
||||
id?: T
|
||||
}
|
||||
updatedAt?: T
|
||||
createdAt?: T
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "form-submissions_select".
|
||||
*/
|
||||
export interface FormSubmissionsSelect<T extends boolean = true> {
|
||||
form?: T
|
||||
submissionData?:
|
||||
| T
|
||||
| {
|
||||
field?: T
|
||||
value?: T
|
||||
id?: T
|
||||
}
|
||||
updatedAt?: T
|
||||
createdAt?: T
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "payload-kv_select".
|
||||
|
|
@ -1636,6 +2013,10 @@ export interface GroupVisitsPage {
|
|||
id?: string | null
|
||||
}[]
|
||||
| null
|
||||
/**
|
||||
* CMS-форма для відображення на сторінці. Якщо не вказано — використовується вбудована форма.
|
||||
*/
|
||||
form?: (number | null) | Form
|
||||
meta?: {
|
||||
title?: string | null
|
||||
description?: string | null
|
||||
|
|
@ -1658,6 +2039,10 @@ export interface BirthdayPage {
|
|||
heroSubtitle?: string | null
|
||||
formTitle?: string | null
|
||||
formSubtitle?: string | null
|
||||
/**
|
||||
* CMS-форма для відображення на сторінці. Якщо не вказано — використовується вбудована форма.
|
||||
*/
|
||||
form?: (number | null) | Form
|
||||
meta?: {
|
||||
title?: string | null
|
||||
description?: string | null
|
||||
|
|
@ -2024,6 +2409,7 @@ export interface GroupVisitsPageSelect<T extends boolean = true> {
|
|||
discount?: T
|
||||
id?: T
|
||||
}
|
||||
form?: T
|
||||
meta?:
|
||||
| T
|
||||
| {
|
||||
|
|
@ -2045,6 +2431,7 @@ export interface BirthdayPageSelect<T extends boolean = true> {
|
|||
heroSubtitle?: T
|
||||
formTitle?: T
|
||||
formSubtitle?: T
|
||||
form?: T
|
||||
meta?:
|
||||
| T
|
||||
| {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue