From fd55afd773ad458ad6e41a4fc4925a0fd987e82b Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Mon, 18 May 2026 13:21:06 +0100 Subject: [PATCH] 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 --- migrations/0004_form_builder.sql | 358 +++ src/payload-generated-schema.ts | 4860 ++++++++++++++++++++++++++++++ src/payload-types.ts | 387 +++ 3 files changed, 5605 insertions(+) create mode 100644 migrations/0004_form_builder.sql create mode 100644 src/payload-generated-schema.ts diff --git a/migrations/0004_form_builder.sql b/migrations/0004_form_builder.sql new file mode 100644 index 0000000..8773f0c --- /dev/null +++ b/migrations/0004_form_builder.sql @@ -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 $$; diff --git a/src/payload-generated-schema.ts b/src/payload-generated-schema.ts new file mode 100644 index 0000000..d1d1c6d --- /dev/null +++ b/src/payload-generated-schema.ts @@ -0,0 +1,4860 @@ +/* tslint:disable */ + +/** + * This file was automatically generated by Payload. + * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, + * and re-run `payload generate:db-schema` to regenerate this file. + */ + +import type {} from '@payloadcms/db-postgres' +import { + pgTable, + index, + uniqueIndex, + foreignKey, + integer, + varchar, + timestamp, + serial, + numeric, + text, + jsonb, + boolean, + pgEnum, +} from '@payloadcms/db-postgres/drizzle/pg-core' +import { sql, relations } from '@payloadcms/db-postgres/drizzle' +export const enum_users_role = pgEnum('enum_users_role', ['admin', 'editor']) +export const enum_pages_blocks_hero_background_type = pgEnum( + 'enum_pages_blocks_hero_background_type', + ['image', 'video'] +) +export const enum_pages_blocks_cta_variant = pgEnum('enum_pages_blocks_cta_variant', [ + 'primary', + 'secondary', + 'dark', +]) +export const enum_pages_status = pgEnum('enum_pages_status', ['draft', 'published']) +export const enum__pages_v_blocks_hero_background_type = pgEnum( + 'enum__pages_v_blocks_hero_background_type', + ['image', 'video'] +) +export const enum__pages_v_blocks_cta_variant = pgEnum('enum__pages_v_blocks_cta_variant', [ + 'primary', + 'secondary', + 'dark', +]) +export const enum__pages_v_version_status = pgEnum('enum__pages_v_version_status', [ + 'draft', + 'published', +]) +export const enum_blog_posts_status = pgEnum('enum_blog_posts_status', ['draft', 'published']) +export const enum__blog_posts_v_version_status = pgEnum('enum__blog_posts_v_version_status', [ + 'draft', + 'published', +]) +export const enum_tariffs_category_tag = pgEnum('enum_tariffs_category_tag', [ + 'dyno', + 'dyvolis', + 'maze', + 'combo', + 'family', +]) +export const enum_leads_status = pgEnum('enum_leads_status', [ + 'new', + 'contacted', + 'qualified', + 'closed', +]) +export const enum_orders_status = pgEnum('enum_orders_status', [ + 'redirected_to_payment', + 'paid', + 'failed', + 'cancelled', +]) +export const enum_reviews_source = pgEnum('enum_reviews_source', [ + 'google', + 'facebook', + 'instagram', + 'manual', +]) +export const enum_redirects_to_type = pgEnum('enum_redirects_to_type', ['reference', 'custom']) +export const enum_redirects_type = pgEnum('enum_redirects_type', ['301', '302']) +export const enum_forms_confirmation_type = pgEnum('enum_forms_confirmation_type', [ + 'message', + 'redirect', +]) +export const enum_forms_redirect_type = pgEnum('enum_forms_redirect_type', ['reference', 'custom']) +export const enum_home_page_status = pgEnum('enum_home_page_status', ['draft', 'published']) +export const enum__home_page_v_version_status = pgEnum('enum__home_page_v_version_status', [ + 'draft', + 'published', +]) +export const enum_header_nav_links_auto_children_from = pgEnum( + 'enum_header_nav_links_auto_children_from', + ['none', 'locations'] +) +export const enum_footer_socials_platform = pgEnum('enum_footer_socials_platform', [ + 'instagram', + 'facebook', + 'youtube', + 'tiktok', +]) +export const enum_group_visits_page_status = pgEnum('enum_group_visits_page_status', [ + 'draft', + 'published', +]) +export const enum__group_visits_page_v_version_status = pgEnum( + 'enum__group_visits_page_v_version_status', + ['draft', 'published'] +) +export const enum_birthday_page_status = pgEnum('enum_birthday_page_status', ['draft', 'published']) +export const enum__birthday_page_v_version_status = pgEnum('enum__birthday_page_v_version_status', [ + 'draft', + 'published', +]) +export const enum_tickets_page_status = pgEnum('enum_tickets_page_status', ['draft', 'published']) +export const enum__tickets_page_v_version_status = pgEnum('enum__tickets_page_v_version_status', [ + 'draft', + 'published', +]) +export const enum_locations_page_status = pgEnum('enum_locations_page_status', [ + 'draft', + 'published', +]) +export const enum__locations_page_v_version_status = pgEnum( + 'enum__locations_page_v_version_status', + ['draft', 'published'] +) +export const enum_blog_index_page_status = pgEnum('enum_blog_index_page_status', [ + 'draft', + 'published', +]) +export const enum__blog_index_page_v_version_status = pgEnum( + 'enum__blog_index_page_v_version_status', + ['draft', 'published'] +) + +export const users_sessions = pgTable( + 'users_sessions', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + expiresAt: timestamp('expires_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }).notNull(), + }, + (columns) => [ + index('users_sessions_order_idx').on(columns._order), + index('users_sessions_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [users.id], + name: 'users_sessions_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const users = pgTable( + 'users', + { + id: serial('id').primaryKey(), + name: varchar('name').notNull(), + role: enum_users_role('role').notNull().default('editor'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + email: varchar('email').notNull(), + resetPasswordToken: varchar('reset_password_token'), + resetPasswordExpiration: timestamp('reset_password_expiration', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + salt: varchar('salt'), + hash: varchar('hash'), + loginAttempts: numeric('login_attempts', { mode: 'number' }).default(0), + lockUntil: timestamp('lock_until', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [ + index('users_updated_at_idx').on(columns.updatedAt), + index('users_created_at_idx').on(columns.createdAt), + uniqueIndex('users_email_idx').on(columns.email), + ] +) + +export const media = pgTable( + 'media', + { + id: serial('id').primaryKey(), + alt: varchar('alt').notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + url: varchar('url'), + thumbnailURL: varchar('thumbnail_u_r_l'), + filename: varchar('filename'), + mimeType: varchar('mime_type'), + filesize: numeric('filesize', { mode: 'number' }), + width: numeric('width', { mode: 'number' }), + height: numeric('height', { mode: 'number' }), + focalX: numeric('focal_x', { mode: 'number' }), + focalY: numeric('focal_y', { mode: 'number' }), + }, + (columns) => [ + index('media_updated_at_idx').on(columns.updatedAt), + index('media_created_at_idx').on(columns.createdAt), + uniqueIndex('media_filename_idx').on(columns.filename), + ] +) + +export const pages_blocks_hero = pgTable( + 'pages_blocks_hero', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + ctaLabel: varchar('cta_label'), + ctaHref: varchar('cta_href'), + backgroundType: enum_pages_blocks_hero_background_type('background_type').default('image'), + backgroundImage: integer('background_image_id').references(() => media.id, { + onDelete: 'set null', + }), + backgroundVideoUrl: varchar('background_video_url'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_hero_order_idx').on(columns._order), + index('pages_blocks_hero_parent_id_idx').on(columns._parentID), + index('pages_blocks_hero_path_idx').on(columns._path), + index('pages_blocks_hero_background_image_idx').on(columns.backgroundImage), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_hero_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_locations_teaser_locations = pgTable( + 'pages_blocks_locations_teaser_locations', + { + _order: integer('_order').notNull(), + _parentID: varchar('_parent_id').notNull(), + id: varchar('id').primaryKey(), + name: varchar('name'), + description: varchar('description'), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + href: varchar('href'), + ctaLabel: varchar('cta_label'), + }, + (columns) => [ + index('pages_blocks_locations_teaser_locations_order_idx').on(columns._order), + index('pages_blocks_locations_teaser_locations_parent_id_idx').on(columns._parentID), + index('pages_blocks_locations_teaser_locations_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages_blocks_locations_teaser.id], + name: 'pages_blocks_locations_teaser_locations_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_locations_teaser = pgTable( + 'pages_blocks_locations_teaser', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_locations_teaser_order_idx').on(columns._order), + index('pages_blocks_locations_teaser_parent_id_idx').on(columns._parentID), + index('pages_blocks_locations_teaser_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_locations_teaser_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_features_items = pgTable( + 'pages_blocks_features_items', + { + _order: integer('_order').notNull(), + _parentID: varchar('_parent_id').notNull(), + id: varchar('id').primaryKey(), + icon: varchar('icon'), + title: varchar('title'), + description: varchar('description'), + }, + (columns) => [ + index('pages_blocks_features_items_order_idx').on(columns._order), + index('pages_blocks_features_items_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages_blocks_features.id], + name: 'pages_blocks_features_items_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_features = pgTable( + 'pages_blocks_features', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_features_order_idx').on(columns._order), + index('pages_blocks_features_parent_id_idx').on(columns._parentID), + index('pages_blocks_features_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_features_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_news_block = pgTable( + 'pages_blocks_news_block', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title').default('Новини'), + limit: numeric('limit', { mode: 'number' }).default(3), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_news_block_order_idx').on(columns._order), + index('pages_blocks_news_block_parent_id_idx').on(columns._parentID), + index('pages_blocks_news_block_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_news_block_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_newsletter_form = pgTable( + 'pages_blocks_newsletter_form', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + ctaLabel: varchar('cta_label').default('Підписатися'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_newsletter_form_order_idx').on(columns._order), + index('pages_blocks_newsletter_form_parent_id_idx').on(columns._parentID), + index('pages_blocks_newsletter_form_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_newsletter_form_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_gallery_images = pgTable( + 'pages_blocks_gallery_images', + { + _order: integer('_order').notNull(), + _parentID: varchar('_parent_id').notNull(), + id: varchar('id').primaryKey(), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + caption: varchar('caption'), + }, + (columns) => [ + index('pages_blocks_gallery_images_order_idx').on(columns._order), + index('pages_blocks_gallery_images_parent_id_idx').on(columns._parentID), + index('pages_blocks_gallery_images_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages_blocks_gallery.id], + name: 'pages_blocks_gallery_images_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_gallery = pgTable( + 'pages_blocks_gallery', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_gallery_order_idx').on(columns._order), + index('pages_blocks_gallery_parent_id_idx').on(columns._parentID), + index('pages_blocks_gallery_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_gallery_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_rich_text = pgTable( + 'pages_blocks_rich_text', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + content: jsonb('content'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_rich_text_order_idx').on(columns._order), + index('pages_blocks_rich_text_parent_id_idx').on(columns._parentID), + index('pages_blocks_rich_text_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_rich_text_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_image_block = pgTable( + 'pages_blocks_image_block', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + caption: varchar('caption'), + fullWidth: boolean('full_width').default(false), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_image_block_order_idx').on(columns._order), + index('pages_blocks_image_block_parent_id_idx').on(columns._parentID), + index('pages_blocks_image_block_path_idx').on(columns._path), + index('pages_blocks_image_block_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_image_block_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_video_block = pgTable( + 'pages_blocks_video_block', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + videoUrl: varchar('video_url'), + caption: varchar('caption'), + autoplay: boolean('autoplay').default(false), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_video_block_order_idx').on(columns._order), + index('pages_blocks_video_block_parent_id_idx').on(columns._parentID), + index('pages_blocks_video_block_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_video_block_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_lead_form = pgTable( + 'pages_blocks_lead_form', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + formSource: varchar('form_source'), + showPhone: boolean('show_phone').default(true), + showEmail: boolean('show_email').default(false), + ctaLabel: varchar('cta_label').default('Відправити'), + successMessage: varchar('success_message').default( + "Дякуємо! Ми зв'яжемося з вами найближчим часом." + ), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_lead_form_order_idx').on(columns._order), + index('pages_blocks_lead_form_parent_id_idx').on(columns._parentID), + index('pages_blocks_lead_form_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_lead_form_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_pricing_block = pgTable( + 'pages_blocks_pricing_block', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + showOnlyVisible: boolean('show_only_visible').default(true), + ctaLabel: varchar('cta_label').default('Купити квиток'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_pricing_block_order_idx').on(columns._order), + index('pages_blocks_pricing_block_parent_id_idx').on(columns._parentID), + index('pages_blocks_pricing_block_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_pricing_block_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages_blocks_cta = pgTable( + 'pages_blocks_cta', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + ctaLabel: varchar('cta_label'), + ctaHref: varchar('cta_href'), + variant: enum_pages_blocks_cta_variant('variant').default('primary'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('pages_blocks_cta_order_idx').on(columns._order), + index('pages_blocks_cta_parent_id_idx').on(columns._parentID), + index('pages_blocks_cta_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [pages.id], + name: 'pages_blocks_cta_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const pages = pgTable( + 'pages', + { + id: serial('id').primaryKey(), + title: varchar('title'), + slug: varchar('slug'), + status: enum_pages_status('status').default('draft'), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + _status: enum_pages_status('_status').default('draft'), + }, + (columns) => [ + uniqueIndex('pages_slug_idx').on(columns.slug), + index('pages_meta_meta_image_idx').on(columns.meta_image), + index('pages_updated_at_idx').on(columns.updatedAt), + index('pages_created_at_idx').on(columns.createdAt), + index('pages__status_idx').on(columns._status), + ] +) + +export const _pages_v_blocks_hero = pgTable( + '_pages_v_blocks_hero', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + ctaLabel: varchar('cta_label'), + ctaHref: varchar('cta_href'), + backgroundType: enum__pages_v_blocks_hero_background_type('background_type').default('image'), + backgroundImage: integer('background_image_id').references(() => media.id, { + onDelete: 'set null', + }), + backgroundVideoUrl: varchar('background_video_url'), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_hero_order_idx').on(columns._order), + index('_pages_v_blocks_hero_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_hero_path_idx').on(columns._path), + index('_pages_v_blocks_hero_background_image_idx').on(columns.backgroundImage), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_hero_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_locations_teaser_locations = pgTable( + '_pages_v_blocks_locations_teaser_locations', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: serial('id').primaryKey(), + name: varchar('name'), + description: varchar('description'), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + href: varchar('href'), + ctaLabel: varchar('cta_label'), + _uuid: varchar('_uuid'), + }, + (columns) => [ + index('_pages_v_blocks_locations_teaser_locations_order_idx').on(columns._order), + index('_pages_v_blocks_locations_teaser_locations_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_locations_teaser_locations_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v_blocks_locations_teaser.id], + name: '_pages_v_blocks_locations_teaser_locations_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_locations_teaser = pgTable( + '_pages_v_blocks_locations_teaser', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + title: varchar('title'), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_locations_teaser_order_idx').on(columns._order), + index('_pages_v_blocks_locations_teaser_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_locations_teaser_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_locations_teaser_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_features_items = pgTable( + '_pages_v_blocks_features_items', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: serial('id').primaryKey(), + icon: varchar('icon'), + title: varchar('title'), + description: varchar('description'), + _uuid: varchar('_uuid'), + }, + (columns) => [ + index('_pages_v_blocks_features_items_order_idx').on(columns._order), + index('_pages_v_blocks_features_items_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v_blocks_features.id], + name: '_pages_v_blocks_features_items_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_features = pgTable( + '_pages_v_blocks_features', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + title: varchar('title'), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_features_order_idx').on(columns._order), + index('_pages_v_blocks_features_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_features_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_features_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_news_block = pgTable( + '_pages_v_blocks_news_block', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + title: varchar('title').default('Новини'), + limit: numeric('limit', { mode: 'number' }).default(3), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_news_block_order_idx').on(columns._order), + index('_pages_v_blocks_news_block_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_news_block_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_news_block_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_newsletter_form = pgTable( + '_pages_v_blocks_newsletter_form', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + ctaLabel: varchar('cta_label').default('Підписатися'), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_newsletter_form_order_idx').on(columns._order), + index('_pages_v_blocks_newsletter_form_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_newsletter_form_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_newsletter_form_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_gallery_images = pgTable( + '_pages_v_blocks_gallery_images', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: serial('id').primaryKey(), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + caption: varchar('caption'), + _uuid: varchar('_uuid'), + }, + (columns) => [ + index('_pages_v_blocks_gallery_images_order_idx').on(columns._order), + index('_pages_v_blocks_gallery_images_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_gallery_images_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v_blocks_gallery.id], + name: '_pages_v_blocks_gallery_images_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_gallery = pgTable( + '_pages_v_blocks_gallery', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + title: varchar('title'), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_gallery_order_idx').on(columns._order), + index('_pages_v_blocks_gallery_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_gallery_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_gallery_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_rich_text = pgTable( + '_pages_v_blocks_rich_text', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + content: jsonb('content'), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_rich_text_order_idx').on(columns._order), + index('_pages_v_blocks_rich_text_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_rich_text_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_rich_text_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_image_block = pgTable( + '_pages_v_blocks_image_block', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + caption: varchar('caption'), + fullWidth: boolean('full_width').default(false), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_image_block_order_idx').on(columns._order), + index('_pages_v_blocks_image_block_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_image_block_path_idx').on(columns._path), + index('_pages_v_blocks_image_block_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_image_block_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_video_block = pgTable( + '_pages_v_blocks_video_block', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + videoUrl: varchar('video_url'), + caption: varchar('caption'), + autoplay: boolean('autoplay').default(false), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_video_block_order_idx').on(columns._order), + index('_pages_v_blocks_video_block_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_video_block_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_video_block_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_lead_form = pgTable( + '_pages_v_blocks_lead_form', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + formSource: varchar('form_source'), + showPhone: boolean('show_phone').default(true), + showEmail: boolean('show_email').default(false), + ctaLabel: varchar('cta_label').default('Відправити'), + successMessage: varchar('success_message').default( + "Дякуємо! Ми зв'яжемося з вами найближчим часом." + ), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_lead_form_order_idx').on(columns._order), + index('_pages_v_blocks_lead_form_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_lead_form_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_lead_form_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_pricing_block = pgTable( + '_pages_v_blocks_pricing_block', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + showOnlyVisible: boolean('show_only_visible').default(true), + ctaLabel: varchar('cta_label').default('Купити квиток'), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_pricing_block_order_idx').on(columns._order), + index('_pages_v_blocks_pricing_block_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_pricing_block_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_pricing_block_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v_blocks_cta = pgTable( + '_pages_v_blocks_cta', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: serial('id').primaryKey(), + title: varchar('title'), + subtitle: varchar('subtitle'), + ctaLabel: varchar('cta_label'), + ctaHref: varchar('cta_href'), + variant: enum__pages_v_blocks_cta_variant('variant').default('primary'), + _uuid: varchar('_uuid'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('_pages_v_blocks_cta_order_idx').on(columns._order), + index('_pages_v_blocks_cta_parent_id_idx').on(columns._parentID), + index('_pages_v_blocks_cta_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_pages_v.id], + name: '_pages_v_blocks_cta_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _pages_v = pgTable( + '_pages_v', + { + id: serial('id').primaryKey(), + parent: integer('parent_id').references(() => pages.id, { + onDelete: 'set null', + }), + version_title: varchar('version_title'), + version_slug: varchar('version_slug'), + version_status: enum__pages_v_version_status('version_status').default('draft'), + version_meta_title: varchar('version_meta_title'), + version_meta_description: varchar('version_meta_description'), + version_meta_image: integer('version_meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + version_updatedAt: timestamp('version_updated_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version_createdAt: timestamp('version_created_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version__status: enum__pages_v_version_status('version__status').default('draft'), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + latest: boolean('latest'), + }, + (columns) => [ + index('_pages_v_parent_idx').on(columns.parent), + index('_pages_v_version_version_slug_idx').on(columns.version_slug), + index('_pages_v_version_meta_version_meta_image_idx').on(columns.version_meta_image), + index('_pages_v_version_version_updated_at_idx').on(columns.version_updatedAt), + index('_pages_v_version_version_created_at_idx').on(columns.version_createdAt), + index('_pages_v_version_version__status_idx').on(columns.version__status), + index('_pages_v_created_at_idx').on(columns.createdAt), + index('_pages_v_updated_at_idx').on(columns.updatedAt), + index('_pages_v_latest_idx').on(columns.latest), + ] +) + +export const blog_posts = pgTable( + 'blog_posts', + { + id: serial('id').primaryKey(), + title: varchar('title'), + slug: varchar('slug'), + publishedAt: timestamp('published_at', { mode: 'string', withTimezone: true, precision: 3 }), + hero: integer('hero_id').references(() => media.id, { + onDelete: 'set null', + }), + body: jsonb('body'), + excerpt: varchar('excerpt'), + status: enum_blog_posts_status('status').default('draft'), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + _status: enum_blog_posts_status('_status').default('draft'), + }, + (columns) => [ + uniqueIndex('blog_posts_slug_idx').on(columns.slug), + index('blog_posts_hero_idx').on(columns.hero), + index('blog_posts_meta_meta_image_idx').on(columns.meta_image), + index('blog_posts_updated_at_idx').on(columns.updatedAt), + index('blog_posts_created_at_idx').on(columns.createdAt), + index('blog_posts__status_idx').on(columns._status), + ] +) + +export const blog_posts_rels = pgTable( + 'blog_posts_rels', + { + id: serial('id').primaryKey(), + order: integer('order'), + parent: integer('parent_id').notNull(), + path: varchar('path').notNull(), + categoriesID: integer('categories_id'), + tagsID: integer('tags_id'), + }, + (columns) => [ + index('blog_posts_rels_order_idx').on(columns.order), + index('blog_posts_rels_parent_idx').on(columns.parent), + index('blog_posts_rels_path_idx').on(columns.path), + index('blog_posts_rels_categories_id_idx').on(columns.categoriesID), + index('blog_posts_rels_tags_id_idx').on(columns.tagsID), + foreignKey({ + columns: [columns['parent']], + foreignColumns: [blog_posts.id], + name: 'blog_posts_rels_parent_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['categoriesID']], + foreignColumns: [categories.id], + name: 'blog_posts_rels_categories_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['tagsID']], + foreignColumns: [tags.id], + name: 'blog_posts_rels_tags_fk', + }).onDelete('cascade'), + ] +) + +export const _blog_posts_v = pgTable( + '_blog_posts_v', + { + id: serial('id').primaryKey(), + parent: integer('parent_id').references(() => blog_posts.id, { + onDelete: 'set null', + }), + version_title: varchar('version_title'), + version_slug: varchar('version_slug'), + version_publishedAt: timestamp('version_published_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version_hero: integer('version_hero_id').references(() => media.id, { + onDelete: 'set null', + }), + version_body: jsonb('version_body'), + version_excerpt: varchar('version_excerpt'), + version_status: enum__blog_posts_v_version_status('version_status').default('draft'), + version_meta_title: varchar('version_meta_title'), + version_meta_description: varchar('version_meta_description'), + version_meta_image: integer('version_meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + version_updatedAt: timestamp('version_updated_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version_createdAt: timestamp('version_created_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version__status: enum__blog_posts_v_version_status('version__status').default('draft'), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + latest: boolean('latest'), + }, + (columns) => [ + index('_blog_posts_v_parent_idx').on(columns.parent), + index('_blog_posts_v_version_version_slug_idx').on(columns.version_slug), + index('_blog_posts_v_version_version_hero_idx').on(columns.version_hero), + index('_blog_posts_v_version_meta_version_meta_image_idx').on(columns.version_meta_image), + index('_blog_posts_v_version_version_updated_at_idx').on(columns.version_updatedAt), + index('_blog_posts_v_version_version_created_at_idx').on(columns.version_createdAt), + index('_blog_posts_v_version_version__status_idx').on(columns.version__status), + index('_blog_posts_v_created_at_idx').on(columns.createdAt), + index('_blog_posts_v_updated_at_idx').on(columns.updatedAt), + index('_blog_posts_v_latest_idx').on(columns.latest), + ] +) + +export const _blog_posts_v_rels = pgTable( + '_blog_posts_v_rels', + { + id: serial('id').primaryKey(), + order: integer('order'), + parent: integer('parent_id').notNull(), + path: varchar('path').notNull(), + categoriesID: integer('categories_id'), + tagsID: integer('tags_id'), + }, + (columns) => [ + index('_blog_posts_v_rels_order_idx').on(columns.order), + index('_blog_posts_v_rels_parent_idx').on(columns.parent), + index('_blog_posts_v_rels_path_idx').on(columns.path), + index('_blog_posts_v_rels_categories_id_idx').on(columns.categoriesID), + index('_blog_posts_v_rels_tags_id_idx').on(columns.tagsID), + foreignKey({ + columns: [columns['parent']], + foreignColumns: [_blog_posts_v.id], + name: '_blog_posts_v_rels_parent_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['categoriesID']], + foreignColumns: [categories.id], + name: '_blog_posts_v_rels_categories_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['tagsID']], + foreignColumns: [tags.id], + name: '_blog_posts_v_rels_tags_fk', + }).onDelete('cascade'), + ] +) + +export const categories = pgTable( + 'categories', + { + id: serial('id').primaryKey(), + name: varchar('name').notNull(), + slug: varchar('slug'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + uniqueIndex('categories_slug_idx').on(columns.slug), + index('categories_updated_at_idx').on(columns.updatedAt), + index('categories_created_at_idx').on(columns.createdAt), + ] +) + +export const tags = pgTable( + 'tags', + { + id: serial('id').primaryKey(), + name: varchar('name').notNull(), + slug: varchar('slug'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + uniqueIndex('tags_slug_idx').on(columns.slug), + index('tags_updated_at_idx').on(columns.updatedAt), + index('tags_created_at_idx').on(columns.createdAt), + ] +) + +export const tariffs = pgTable( + 'tariffs', + { + id: serial('id').primaryKey(), + ezy_id: numeric('ezy_id', { mode: 'number' }).notNull(), + display_name: varchar('display_name'), + description: jsonb('description'), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + icon: varchar('icon'), + category_tag: enum_tariffs_category_tag('category_tag').notNull(), + sort: numeric('sort', { mode: 'number' }).default(0), + visible: boolean('visible').default(true), + last_synced_name: varchar('last_synced_name'), + last_synced_price: numeric('last_synced_price', { mode: 'number' }), + last_synced_at: timestamp('last_synced_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + uniqueIndex('tariffs_ezy_id_idx').on(columns.ezy_id), + index('tariffs_image_idx').on(columns.image), + index('tariffs_updated_at_idx').on(columns.updatedAt), + index('tariffs_created_at_idx').on(columns.createdAt), + ] +) + +export const leads = pgTable( + 'leads', + { + id: serial('id').primaryKey(), + name: varchar('name').notNull(), + phone: varchar('phone').notNull(), + email: varchar('email'), + formSource: varchar('form_source').notNull(), + utmSource: varchar('utm_source'), + utmMedium: varchar('utm_medium'), + utmCampaign: varchar('utm_campaign'), + utmContent: varchar('utm_content'), + utmTerm: varchar('utm_term'), + gclid: varchar('gclid'), + status: enum_leads_status('status').default('new'), + message: varchar('message'), + groupSize: numeric('group_size', { mode: 'number' }), + preferredDate: timestamp('preferred_date', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + packageSlug: varchar('package_slug'), + notes: varchar('notes'), + lastCallAt: timestamp('last_call_at', { mode: 'string', withTimezone: true, precision: 3 }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + index('leads_updated_at_idx').on(columns.updatedAt), + index('leads_created_at_idx').on(columns.createdAt), + ] +) + +export const orders_items = pgTable( + 'orders_items', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + tariffId: varchar('tariff_id').notNull(), + count: numeric('count', { mode: 'number' }).notNull(), + }, + (columns) => [ + index('orders_items_order_idx').on(columns._order), + index('orders_items_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [orders.id], + name: 'orders_items_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const orders = pgTable( + 'orders', + { + id: serial('id').primaryKey(), + name: varchar('name'), + phone: varchar('phone'), + email: varchar('email').notNull(), + amount: numeric('amount', { mode: 'number' }).notNull(), + monobankUrl: varchar('monobank_url').notNull(), + status: enum_orders_status('status').default('redirected_to_payment'), + ezyActivity: varchar('ezy_activity'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + index('orders_updated_at_idx').on(columns.updatedAt), + index('orders_created_at_idx').on(columns.createdAt), + ] +) + +export const locations_gallery = pgTable( + 'locations_gallery', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + }, + (columns) => [ + index('locations_gallery_order_idx').on(columns._order), + index('locations_gallery_parent_id_idx').on(columns._parentID), + index('locations_gallery_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [locations.id], + name: 'locations_gallery_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const locations_hero_tips = pgTable( + 'locations_hero_tips', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + text: varchar('text').notNull(), + }, + (columns) => [ + index('locations_hero_tips_order_idx').on(columns._order), + index('locations_hero_tips_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [locations.id], + name: 'locations_hero_tips_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const locations_why_visit_items = pgTable( + 'locations_why_visit_items', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title').notNull(), + description: varchar('description').notNull(), + }, + (columns) => [ + index('locations_why_visit_items_order_idx').on(columns._order), + index('locations_why_visit_items_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [locations.id], + name: 'locations_why_visit_items_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const locations_review_videos = pgTable( + 'locations_review_videos', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + src: varchar('src').notNull(), + poster: varchar('poster'), + label: varchar('label'), + }, + (columns) => [ + index('locations_review_videos_order_idx').on(columns._order), + index('locations_review_videos_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [locations.id], + name: 'locations_review_videos_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const locations = pgTable( + 'locations', + { + id: serial('id').primaryKey(), + name: varchar('name').notNull(), + slug: varchar('slug').notNull(), + tagline: varchar('tagline'), + shortDesc: varchar('short_desc'), + description: jsonb('description'), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + href: varchar('href'), + showInMenu: boolean('show_in_menu').default(true), + showOnHome: boolean('show_on_home').default(true), + sort: numeric('sort', { mode: 'number' }).default(0), + showDetailPage: boolean('show_detail_page').default(false), + heroBackground: integer('hero_background_id').references(() => media.id, { + onDelete: 'set null', + }), + heroStat: varchar('hero_stat'), + heroStatLabel: varchar('hero_stat_label'), + galleryQuote: varchar('gallery_quote'), + whyVisitTitle: varchar('why_visit_title'), + workingHours: varchar('working_hours'), + comboDescription: varchar('combo_description'), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + uniqueIndex('locations_slug_idx').on(columns.slug), + index('locations_image_idx').on(columns.image), + index('locations_hero_background_idx').on(columns.heroBackground), + index('locations_meta_meta_image_idx').on(columns.meta_image), + index('locations_updated_at_idx').on(columns.updatedAt), + index('locations_created_at_idx').on(columns.createdAt), + ] +) + +export const reviews = pgTable( + 'reviews', + { + id: serial('id').primaryKey(), + name: varchar('name').notNull(), + initial: varchar('initial'), + avatarBg: integer('avatar_bg_id').references(() => media.id, { + onDelete: 'set null', + }), + ago: varchar('ago'), + rating: numeric('rating', { mode: 'number' }).default(5), + text: varchar('text').notNull(), + source: enum_reviews_source('source').default('google'), + videoUrl: varchar('video_url'), + videoPoster: varchar('video_poster'), + showOnHome: boolean('show_on_home').default(true), + sort: numeric('sort', { mode: 'number' }).default(0), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + index('reviews_avatar_bg_idx').on(columns.avatarBg), + index('reviews_updated_at_idx').on(columns.updatedAt), + index('reviews_created_at_idx').on(columns.createdAt), + ] +) + +export const birthday_packages_features = pgTable( + 'birthday_packages_features', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + text: varchar('text').notNull(), + }, + (columns) => [ + index('birthday_packages_features_order_idx').on(columns._order), + index('birthday_packages_features_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [birthday_packages.id], + name: 'birthday_packages_features_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const birthday_packages = pgTable( + 'birthday_packages', + { + id: serial('id').primaryKey(), + name: varchar('name').notNull(), + slug: varchar('slug').notNull(), + price: numeric('price', { mode: 'number' }).notNull(), + currency: varchar('currency').default('₴'), + priceLabel: varchar('price_label'), + featured: boolean('featured').default(false), + badge: varchar('badge'), + ctaLabel: varchar('cta_label').default('Обрати пакет'), + ctaHref: varchar('cta_href'), + sort: numeric('sort', { mode: 'number' }).default(0), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + uniqueIndex('birthday_packages_slug_idx').on(columns.slug), + index('birthday_packages_updated_at_idx').on(columns.updatedAt), + index('birthday_packages_created_at_idx').on(columns.createdAt), + ] +) + +export const redirects = pgTable( + 'redirects', + { + id: serial('id').primaryKey(), + from: varchar('from').notNull(), + to_type: enum_redirects_to_type('to_type').default('reference'), + to_url: varchar('to_url'), + type: enum_redirects_type('type').notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + uniqueIndex('redirects_from_idx').on(columns.from), + index('redirects_updated_at_idx').on(columns.updatedAt), + index('redirects_created_at_idx').on(columns.createdAt), + ] +) + +export const redirects_rels = pgTable( + 'redirects_rels', + { + id: serial('id').primaryKey(), + order: integer('order'), + parent: integer('parent_id').notNull(), + path: varchar('path').notNull(), + pagesID: integer('pages_id'), + }, + (columns) => [ + index('redirects_rels_order_idx').on(columns.order), + index('redirects_rels_parent_idx').on(columns.parent), + index('redirects_rels_path_idx').on(columns.path), + index('redirects_rels_pages_id_idx').on(columns.pagesID), + foreignKey({ + columns: [columns['parent']], + foreignColumns: [redirects.id], + name: 'redirects_rels_parent_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['pagesID']], + foreignColumns: [pages.id], + name: 'redirects_rels_pages_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_checkbox = pgTable( + 'forms_blocks_checkbox', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + name: varchar('name').notNull(), + label: varchar('label'), + width: numeric('width', { mode: 'number' }), + required: boolean('required'), + defaultValue: boolean('default_value'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('forms_blocks_checkbox_order_idx').on(columns._order), + index('forms_blocks_checkbox_parent_id_idx').on(columns._parentID), + index('forms_blocks_checkbox_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_blocks_checkbox_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_email = pgTable( + 'forms_blocks_email', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + name: varchar('name').notNull(), + label: varchar('label'), + width: numeric('width', { mode: 'number' }), + required: boolean('required'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('forms_blocks_email_order_idx').on(columns._order), + index('forms_blocks_email_parent_id_idx').on(columns._parentID), + index('forms_blocks_email_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_blocks_email_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_message = pgTable( + 'forms_blocks_message', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + message: jsonb('message'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('forms_blocks_message_order_idx').on(columns._order), + index('forms_blocks_message_parent_id_idx').on(columns._parentID), + index('forms_blocks_message_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_blocks_message_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_number = pgTable( + 'forms_blocks_number', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + name: varchar('name').notNull(), + label: varchar('label'), + width: numeric('width', { mode: 'number' }), + defaultValue: numeric('default_value', { mode: 'number' }), + required: boolean('required'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('forms_blocks_number_order_idx').on(columns._order), + index('forms_blocks_number_parent_id_idx').on(columns._parentID), + index('forms_blocks_number_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_blocks_number_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_select_options = pgTable( + 'forms_blocks_select_options', + { + _order: integer('_order').notNull(), + _parentID: varchar('_parent_id').notNull(), + id: varchar('id').primaryKey(), + label: varchar('label').notNull(), + value: varchar('value').notNull(), + }, + (columns) => [ + index('forms_blocks_select_options_order_idx').on(columns._order), + index('forms_blocks_select_options_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms_blocks_select.id], + name: 'forms_blocks_select_options_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_select = pgTable( + 'forms_blocks_select', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + name: varchar('name').notNull(), + label: varchar('label'), + width: numeric('width', { mode: 'number' }), + defaultValue: varchar('default_value'), + placeholder: varchar('placeholder'), + required: boolean('required'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('forms_blocks_select_order_idx').on(columns._order), + index('forms_blocks_select_parent_id_idx').on(columns._parentID), + index('forms_blocks_select_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_blocks_select_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_text = pgTable( + 'forms_blocks_text', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + name: varchar('name').notNull(), + label: varchar('label'), + width: numeric('width', { mode: 'number' }), + defaultValue: varchar('default_value'), + required: boolean('required'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('forms_blocks_text_order_idx').on(columns._order), + index('forms_blocks_text_parent_id_idx').on(columns._parentID), + index('forms_blocks_text_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_blocks_text_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_textarea = pgTable( + 'forms_blocks_textarea', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + name: varchar('name').notNull(), + label: varchar('label'), + width: numeric('width', { mode: 'number' }), + defaultValue: varchar('default_value'), + required: boolean('required'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('forms_blocks_textarea_order_idx').on(columns._order), + index('forms_blocks_textarea_parent_id_idx').on(columns._parentID), + index('forms_blocks_textarea_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_blocks_textarea_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_radio_options = pgTable( + 'forms_blocks_radio_options', + { + _order: integer('_order').notNull(), + _parentID: varchar('_parent_id').notNull(), + id: varchar('id').primaryKey(), + label: varchar('label').notNull(), + value: varchar('value').notNull(), + }, + (columns) => [ + index('forms_blocks_radio_options_order_idx').on(columns._order), + index('forms_blocks_radio_options_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms_blocks_radio.id], + name: 'forms_blocks_radio_options_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_radio = pgTable( + 'forms_blocks_radio', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + name: varchar('name').notNull(), + label: varchar('label'), + width: numeric('width', { mode: 'number' }), + defaultValue: varchar('default_value'), + required: boolean('required'), + blockName: varchar('block_name'), + }, + (columns) => [ + index('forms_blocks_radio_order_idx').on(columns._order), + index('forms_blocks_radio_parent_id_idx').on(columns._parentID), + index('forms_blocks_radio_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_blocks_radio_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_blocks_date = pgTable( + 'forms_blocks_date', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + _path: text('_path').notNull(), + id: varchar('id').primaryKey(), + name: varchar('name').notNull(), + label: varchar('label'), + width: numeric('width', { mode: 'number' }), + required: boolean('required'), + defaultValue: timestamp('default_value', { mode: 'string', withTimezone: true, precision: 3 }), + blockName: varchar('block_name'), + }, + (columns) => [ + index('forms_blocks_date_order_idx').on(columns._order), + index('forms_blocks_date_parent_id_idx').on(columns._parentID), + index('forms_blocks_date_path_idx').on(columns._path), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_blocks_date_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms_emails = pgTable( + 'forms_emails', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + emailTo: varchar('email_to'), + cc: varchar('cc'), + bcc: varchar('bcc'), + replyTo: varchar('reply_to'), + emailFrom: varchar('email_from'), + subject: varchar('subject').notNull().default("You've received a new message."), + message: jsonb('message'), + }, + (columns) => [ + index('forms_emails_order_idx').on(columns._order), + index('forms_emails_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [forms.id], + name: 'forms_emails_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const forms = pgTable( + 'forms', + { + id: serial('id').primaryKey(), + title: varchar('title').notNull(), + submitButtonLabel: varchar('submit_button_label'), + confirmationType: enum_forms_confirmation_type('confirmation_type').default('message'), + confirmationMessage: jsonb('confirmation_message'), + redirect_type: enum_forms_redirect_type('redirect_type').default('reference'), + redirect_url: varchar('redirect_url'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + index('forms_updated_at_idx').on(columns.updatedAt), + index('forms_created_at_idx').on(columns.createdAt), + ] +) + +export const forms_rels = pgTable( + 'forms_rels', + { + id: serial('id').primaryKey(), + order: integer('order'), + parent: integer('parent_id').notNull(), + path: varchar('path').notNull(), + pagesID: integer('pages_id'), + }, + (columns) => [ + index('forms_rels_order_idx').on(columns.order), + index('forms_rels_parent_idx').on(columns.parent), + index('forms_rels_path_idx').on(columns.path), + index('forms_rels_pages_id_idx').on(columns.pagesID), + foreignKey({ + columns: [columns['parent']], + foreignColumns: [forms.id], + name: 'forms_rels_parent_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['pagesID']], + foreignColumns: [pages.id], + name: 'forms_rels_pages_fk', + }).onDelete('cascade'), + ] +) + +export const form_submissions_submission_data = pgTable( + 'form_submissions_submission_data', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + field: varchar('field').notNull(), + value: varchar('value').notNull(), + }, + (columns) => [ + index('form_submissions_submission_data_order_idx').on(columns._order), + index('form_submissions_submission_data_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [form_submissions.id], + name: 'form_submissions_submission_data_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const form_submissions = pgTable( + 'form_submissions', + { + id: serial('id').primaryKey(), + form: integer('form_id') + .notNull() + .references(() => forms.id, { + onDelete: 'set null', + }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + index('form_submissions_form_idx').on(columns.form), + index('form_submissions_updated_at_idx').on(columns.updatedAt), + index('form_submissions_created_at_idx').on(columns.createdAt), + ] +) + +export const payload_kv = pgTable( + 'payload_kv', + { + id: serial('id').primaryKey(), + key: varchar('key').notNull(), + data: jsonb('data').notNull(), + }, + (columns) => [uniqueIndex('payload_kv_key_idx').on(columns.key)] +) + +export const payload_locked_documents = pgTable( + 'payload_locked_documents', + { + id: serial('id').primaryKey(), + globalSlug: varchar('global_slug'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + index('payload_locked_documents_global_slug_idx').on(columns.globalSlug), + index('payload_locked_documents_updated_at_idx').on(columns.updatedAt), + index('payload_locked_documents_created_at_idx').on(columns.createdAt), + ] +) + +export const payload_locked_documents_rels = pgTable( + 'payload_locked_documents_rels', + { + id: serial('id').primaryKey(), + order: integer('order'), + parent: integer('parent_id').notNull(), + path: varchar('path').notNull(), + usersID: integer('users_id'), + mediaID: integer('media_id'), + pagesID: integer('pages_id'), + 'blog-postsID': integer('blog_posts_id'), + categoriesID: integer('categories_id'), + tagsID: integer('tags_id'), + tariffsID: integer('tariffs_id'), + leadsID: integer('leads_id'), + ordersID: integer('orders_id'), + locationsID: integer('locations_id'), + reviewsID: integer('reviews_id'), + 'birthday-packagesID': integer('birthday_packages_id'), + redirectsID: integer('redirects_id'), + formsID: integer('forms_id'), + 'form-submissionsID': integer('form_submissions_id'), + }, + (columns) => [ + index('payload_locked_documents_rels_order_idx').on(columns.order), + index('payload_locked_documents_rels_parent_idx').on(columns.parent), + index('payload_locked_documents_rels_path_idx').on(columns.path), + index('payload_locked_documents_rels_users_id_idx').on(columns.usersID), + index('payload_locked_documents_rels_media_id_idx').on(columns.mediaID), + index('payload_locked_documents_rels_pages_id_idx').on(columns.pagesID), + index('payload_locked_documents_rels_blog_posts_id_idx').on(columns['blog-postsID']), + index('payload_locked_documents_rels_categories_id_idx').on(columns.categoriesID), + index('payload_locked_documents_rels_tags_id_idx').on(columns.tagsID), + index('payload_locked_documents_rels_tariffs_id_idx').on(columns.tariffsID), + index('payload_locked_documents_rels_leads_id_idx').on(columns.leadsID), + index('payload_locked_documents_rels_orders_id_idx').on(columns.ordersID), + index('payload_locked_documents_rels_locations_id_idx').on(columns.locationsID), + index('payload_locked_documents_rels_reviews_id_idx').on(columns.reviewsID), + index('payload_locked_documents_rels_birthday_packages_id_idx').on( + columns['birthday-packagesID'] + ), + index('payload_locked_documents_rels_redirects_id_idx').on(columns.redirectsID), + index('payload_locked_documents_rels_forms_id_idx').on(columns.formsID), + index('payload_locked_documents_rels_form_submissions_id_idx').on( + columns['form-submissionsID'] + ), + foreignKey({ + columns: [columns['parent']], + foreignColumns: [payload_locked_documents.id], + name: 'payload_locked_documents_rels_parent_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['usersID']], + foreignColumns: [users.id], + name: 'payload_locked_documents_rels_users_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['mediaID']], + foreignColumns: [media.id], + name: 'payload_locked_documents_rels_media_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['pagesID']], + foreignColumns: [pages.id], + name: 'payload_locked_documents_rels_pages_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['blog-postsID']], + foreignColumns: [blog_posts.id], + name: 'payload_locked_documents_rels_blog_posts_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['categoriesID']], + foreignColumns: [categories.id], + name: 'payload_locked_documents_rels_categories_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['tagsID']], + foreignColumns: [tags.id], + name: 'payload_locked_documents_rels_tags_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['tariffsID']], + foreignColumns: [tariffs.id], + name: 'payload_locked_documents_rels_tariffs_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['leadsID']], + foreignColumns: [leads.id], + name: 'payload_locked_documents_rels_leads_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['ordersID']], + foreignColumns: [orders.id], + name: 'payload_locked_documents_rels_orders_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['locationsID']], + foreignColumns: [locations.id], + name: 'payload_locked_documents_rels_locations_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['reviewsID']], + foreignColumns: [reviews.id], + name: 'payload_locked_documents_rels_reviews_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['birthday-packagesID']], + foreignColumns: [birthday_packages.id], + name: 'payload_locked_documents_rels_birthday_packages_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['redirectsID']], + foreignColumns: [redirects.id], + name: 'payload_locked_documents_rels_redirects_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['formsID']], + foreignColumns: [forms.id], + name: 'payload_locked_documents_rels_forms_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['form-submissionsID']], + foreignColumns: [form_submissions.id], + name: 'payload_locked_documents_rels_form_submissions_fk', + }).onDelete('cascade'), + ] +) + +export const payload_preferences = pgTable( + 'payload_preferences', + { + id: serial('id').primaryKey(), + key: varchar('key'), + value: jsonb('value'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + index('payload_preferences_key_idx').on(columns.key), + index('payload_preferences_updated_at_idx').on(columns.updatedAt), + index('payload_preferences_created_at_idx').on(columns.createdAt), + ] +) + +export const payload_preferences_rels = pgTable( + 'payload_preferences_rels', + { + id: serial('id').primaryKey(), + order: integer('order'), + parent: integer('parent_id').notNull(), + path: varchar('path').notNull(), + usersID: integer('users_id'), + }, + (columns) => [ + index('payload_preferences_rels_order_idx').on(columns.order), + index('payload_preferences_rels_parent_idx').on(columns.parent), + index('payload_preferences_rels_path_idx').on(columns.path), + index('payload_preferences_rels_users_id_idx').on(columns.usersID), + foreignKey({ + columns: [columns['parent']], + foreignColumns: [payload_preferences.id], + name: 'payload_preferences_rels_parent_fk', + }).onDelete('cascade'), + foreignKey({ + columns: [columns['usersID']], + foreignColumns: [users.id], + name: 'payload_preferences_rels_users_fk', + }).onDelete('cascade'), + ] +) + +export const payload_migrations = pgTable( + 'payload_migrations', + { + id: serial('id').primaryKey(), + name: varchar('name'), + batch: numeric('batch', { mode: 'number' }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + }, + (columns) => [ + index('payload_migrations_updated_at_idx').on(columns.updatedAt), + index('payload_migrations_created_at_idx').on(columns.createdAt), + ] +) + +export const home_page_why_parents_items = pgTable( + 'home_page_why_parents_items', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title'), + description: varchar('description'), + }, + (columns) => [ + index('home_page_why_parents_items_order_idx').on(columns._order), + index('home_page_why_parents_items_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [home_page.id], + name: 'home_page_why_parents_items_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const home_page_why_parents_side_gallery = pgTable( + 'home_page_why_parents_side_gallery', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + }, + (columns) => [ + index('home_page_why_parents_side_gallery_order_idx').on(columns._order), + index('home_page_why_parents_side_gallery_parent_id_idx').on(columns._parentID), + index('home_page_why_parents_side_gallery_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [home_page.id], + name: 'home_page_why_parents_side_gallery_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const home_page_gallery_images = pgTable( + 'home_page_gallery_images', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + alt: varchar('alt'), + }, + (columns) => [ + index('home_page_gallery_images_order_idx').on(columns._order), + index('home_page_gallery_images_parent_id_idx').on(columns._parentID), + index('home_page_gallery_images_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [home_page.id], + name: 'home_page_gallery_images_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const home_page = pgTable( + 'home_page', + { + id: serial('id').primaryKey(), + hero_title: varchar('hero_title'), + hero_subtitle: varchar('hero_subtitle'), + hero_ctaLabel: varchar('hero_cta_label'), + hero_ctaHref: varchar('hero_cta_href'), + hero_backgroundVideo: varchar('hero_background_video'), + hero_backgroundImage: integer('hero_background_image_id').references(() => media.id, { + onDelete: 'set null', + }), + hero_foregroundOverlay: integer('hero_foreground_overlay_id').references(() => media.id, { + onDelete: 'set null', + }), + hero_silhouetteOverlay: integer('hero_silhouette_overlay_id').references(() => media.id, { + onDelete: 'set null', + }), + pageHero_backgroundImage: integer('page_hero_background_image_id').references(() => media.id, { + onDelete: 'set null', + }), + sectionTitles_locations: varchar('section_titles_locations'), + sectionTitles_whyParents: varchar('section_titles_why_parents'), + sectionTitles_birthday: varchar('section_titles_birthday'), + sectionTitles_gallery: varchar('section_titles_gallery'), + sectionTitles_reviews: varchar('section_titles_reviews'), + sectionTitles_news: varchar('section_titles_news'), + video_poster: integer('video_poster_id').references(() => media.id, { + onDelete: 'set null', + }), + video_src: varchar('video_src'), + birthdayIntro_text: varchar('birthday_intro_text'), + news_title: varchar('news_title'), + news_subtitle: varchar('news_subtitle'), + news_limit: numeric('news_limit', { mode: 'number' }).default(3), + map_embedUrl: varchar('map_embed_url'), + map_address: varchar('map_address'), + map_lat: numeric('map_lat', { mode: 'number' }), + map_lng: numeric('map_lng', { mode: 'number' }), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + _status: enum_home_page_status('_status').default('draft'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [ + index('home_page_hero_hero_background_image_idx').on(columns.hero_backgroundImage), + index('home_page_hero_hero_foreground_overlay_idx').on(columns.hero_foregroundOverlay), + index('home_page_hero_hero_silhouette_overlay_idx').on(columns.hero_silhouetteOverlay), + index('home_page_page_hero_page_hero_background_image_idx').on( + columns.pageHero_backgroundImage + ), + index('home_page_video_video_poster_idx').on(columns.video_poster), + index('home_page_meta_meta_image_idx').on(columns.meta_image), + index('home_page__status_idx').on(columns._status), + ] +) + +export const _home_page_v_version_why_parents_items = pgTable( + '_home_page_v_version_why_parents_items', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: serial('id').primaryKey(), + title: varchar('title'), + description: varchar('description'), + _uuid: varchar('_uuid'), + }, + (columns) => [ + index('_home_page_v_version_why_parents_items_order_idx').on(columns._order), + index('_home_page_v_version_why_parents_items_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_home_page_v.id], + name: '_home_page_v_version_why_parents_items_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _home_page_v_version_why_parents_side_gallery = pgTable( + '_home_page_v_version_why_parents_side_gallery', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: serial('id').primaryKey(), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + _uuid: varchar('_uuid'), + }, + (columns) => [ + index('_home_page_v_version_why_parents_side_gallery_order_idx').on(columns._order), + index('_home_page_v_version_why_parents_side_gallery_parent_id_idx').on(columns._parentID), + index('_home_page_v_version_why_parents_side_gallery_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_home_page_v.id], + name: '_home_page_v_version_why_parents_side_gallery_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _home_page_v_version_gallery_images = pgTable( + '_home_page_v_version_gallery_images', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: serial('id').primaryKey(), + image: integer('image_id').references(() => media.id, { + onDelete: 'set null', + }), + alt: varchar('alt'), + _uuid: varchar('_uuid'), + }, + (columns) => [ + index('_home_page_v_version_gallery_images_order_idx').on(columns._order), + index('_home_page_v_version_gallery_images_parent_id_idx').on(columns._parentID), + index('_home_page_v_version_gallery_images_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_home_page_v.id], + name: '_home_page_v_version_gallery_images_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _home_page_v = pgTable( + '_home_page_v', + { + id: serial('id').primaryKey(), + version_hero_title: varchar('version_hero_title'), + version_hero_subtitle: varchar('version_hero_subtitle'), + version_hero_ctaLabel: varchar('version_hero_cta_label'), + version_hero_ctaHref: varchar('version_hero_cta_href'), + version_hero_backgroundVideo: varchar('version_hero_background_video'), + version_hero_backgroundImage: integer('version_hero_background_image_id').references( + () => media.id, + { + onDelete: 'set null', + } + ), + version_hero_foregroundOverlay: integer('version_hero_foreground_overlay_id').references( + () => media.id, + { + onDelete: 'set null', + } + ), + version_hero_silhouetteOverlay: integer('version_hero_silhouette_overlay_id').references( + () => media.id, + { + onDelete: 'set null', + } + ), + version_pageHero_backgroundImage: integer('version_page_hero_background_image_id').references( + () => media.id, + { + onDelete: 'set null', + } + ), + version_sectionTitles_locations: varchar('version_section_titles_locations'), + version_sectionTitles_whyParents: varchar('version_section_titles_why_parents'), + version_sectionTitles_birthday: varchar('version_section_titles_birthday'), + version_sectionTitles_gallery: varchar('version_section_titles_gallery'), + version_sectionTitles_reviews: varchar('version_section_titles_reviews'), + version_sectionTitles_news: varchar('version_section_titles_news'), + version_video_poster: integer('version_video_poster_id').references(() => media.id, { + onDelete: 'set null', + }), + version_video_src: varchar('version_video_src'), + version_birthdayIntro_text: varchar('version_birthday_intro_text'), + version_news_title: varchar('version_news_title'), + version_news_subtitle: varchar('version_news_subtitle'), + version_news_limit: numeric('version_news_limit', { mode: 'number' }).default(3), + version_map_embedUrl: varchar('version_map_embed_url'), + version_map_address: varchar('version_map_address'), + version_map_lat: numeric('version_map_lat', { mode: 'number' }), + version_map_lng: numeric('version_map_lng', { mode: 'number' }), + version_meta_title: varchar('version_meta_title'), + version_meta_description: varchar('version_meta_description'), + version_meta_image: integer('version_meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + version__status: enum__home_page_v_version_status('version__status').default('draft'), + version_updatedAt: timestamp('version_updated_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version_createdAt: timestamp('version_created_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + latest: boolean('latest'), + autosave: boolean('autosave'), + }, + (columns) => [ + index('_home_page_v_version_hero_version_hero_background_image_idx').on( + columns.version_hero_backgroundImage + ), + index('_home_page_v_version_hero_version_hero_foreground_overla_idx').on( + columns.version_hero_foregroundOverlay + ), + index('_home_page_v_version_hero_version_hero_silhouette_overla_idx').on( + columns.version_hero_silhouetteOverlay + ), + index('_home_page_v_version_page_hero_version_page_hero_backgro_idx').on( + columns.version_pageHero_backgroundImage + ), + index('_home_page_v_version_video_version_video_poster_idx').on(columns.version_video_poster), + index('_home_page_v_version_meta_version_meta_image_idx').on(columns.version_meta_image), + index('_home_page_v_version_version__status_idx').on(columns.version__status), + index('_home_page_v_created_at_idx').on(columns.createdAt), + index('_home_page_v_updated_at_idx').on(columns.updatedAt), + index('_home_page_v_latest_idx').on(columns.latest), + index('_home_page_v_autosave_idx').on(columns.autosave), + ] +) + +export const checkout_page = pgTable( + 'checkout_page', + { + id: serial('id').primaryKey(), + title: varchar('title').default('Оформлення замовлення'), + instructions: jsonb('instructions'), + terms: jsonb('terms'), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [index('checkout_page_meta_meta_image_idx').on(columns.meta_image)] +) + +export const thank_you_page = pgTable( + 'thank_you_page', + { + id: serial('id').primaryKey(), + title: varchar('title').default('Дякуємо за замовлення!'), + message: jsonb('message'), + contactPhone: varchar('contact_phone').default('+380 (67) 000-00-00'), + contactEmail: varchar('contact_email'), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [index('thank_you_page_meta_meta_image_idx').on(columns.meta_image)] +) + +export const header_nav_links_children = pgTable( + 'header_nav_links_children', + { + _order: integer('_order').notNull(), + _parentID: varchar('_parent_id').notNull(), + id: varchar('id').primaryKey(), + label: varchar('label'), + href: varchar('href'), + }, + (columns) => [ + index('header_nav_links_children_order_idx').on(columns._order), + index('header_nav_links_children_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [header_nav_links.id], + name: 'header_nav_links_children_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const header_nav_links = pgTable( + 'header_nav_links', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + label: varchar('label'), + href: varchar('href'), + openInNewTab: boolean('open_in_new_tab').default(false), + autoChildrenFrom: + enum_header_nav_links_auto_children_from('auto_children_from').default('none'), + }, + (columns) => [ + index('header_nav_links_order_idx').on(columns._order), + index('header_nav_links_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [header.id], + name: 'header_nav_links_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const header = pgTable( + 'header', + { + id: serial('id').primaryKey(), + logo: integer('logo_id').references(() => media.id, { + onDelete: 'set null', + }), + logoAlt: varchar('logo_alt'), + ctaLabel: varchar('cta_label'), + ctaHref: varchar('cta_href'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [index('header_logo_idx').on(columns.logo)] +) + +export const footer_nav_links = pgTable( + 'footer_nav_links', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + label: varchar('label'), + href: varchar('href'), + }, + (columns) => [ + index('footer_nav_links_order_idx').on(columns._order), + index('footer_nav_links_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [footer.id], + name: 'footer_nav_links_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const footer_socials = pgTable( + 'footer_socials', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + platform: enum_footer_socials_platform('platform'), + url: varchar('url'), + }, + (columns) => [ + index('footer_socials_order_idx').on(columns._order), + index('footer_socials_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [footer.id], + name: 'footer_socials_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const footer = pgTable( + 'footer', + { + id: serial('id').primaryKey(), + logo: integer('logo_id').references(() => media.id, { + onDelete: 'set null', + }), + logoAlt: varchar('logo_alt'), + contacts_phone: varchar('contacts_phone'), + contacts_email: varchar('contacts_email'), + contacts_address: varchar('contacts_address'), + copyrightText: varchar('copyright_text'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [index('footer_logo_idx').on(columns.logo)] +) + +export const site_settings_tariff_category_labels = pgTable( + 'site_settings_tariff_category_labels', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + key: varchar('key').notNull(), + label: varchar('label').notNull(), + }, + (columns) => [ + index('site_settings_tariff_category_labels_order_idx').on(columns._order), + index('site_settings_tariff_category_labels_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [site_settings.id], + name: 'site_settings_tariff_category_labels_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const site_settings = pgTable( + 'site_settings', + { + id: serial('id').primaryKey(), + ga4Id: varchar('ga4_id'), + binotelId: varchar('binotel_id'), + telegramChatId: varchar('telegram_chat_id'), + resendFrom: varchar('resend_from'), + defaultMetaTitle: varchar('default_meta_title'), + defaultMetaDescription: varchar('default_meta_description'), + defaultOgImage: integer('default_og_image_id').references(() => media.id, { + onDelete: 'set null', + }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [index('site_settings_default_og_image_idx').on(columns.defaultOgImage)] +) + +export const dyvolis_page_hero_tips = pgTable( + 'dyvolis_page_hero_tips', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + text: varchar('text').notNull(), + }, + (columns) => [ + index('dyvolis_page_hero_tips_order_idx').on(columns._order), + index('dyvolis_page_hero_tips_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [dyvolis_page.id], + name: 'dyvolis_page_hero_tips_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const dyvolis_page_gallery_images = pgTable( + 'dyvolis_page_gallery_images', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + image: integer('image_id') + .notNull() + .references(() => media.id, { + onDelete: 'set null', + }), + }, + (columns) => [ + index('dyvolis_page_gallery_images_order_idx').on(columns._order), + index('dyvolis_page_gallery_images_parent_id_idx').on(columns._parentID), + index('dyvolis_page_gallery_images_image_idx').on(columns.image), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [dyvolis_page.id], + name: 'dyvolis_page_gallery_images_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const dyvolis_page_why_visit_items = pgTable( + 'dyvolis_page_why_visit_items', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + title: varchar('title').notNull(), + description: varchar('description').notNull(), + }, + (columns) => [ + index('dyvolis_page_why_visit_items_order_idx').on(columns._order), + index('dyvolis_page_why_visit_items_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [dyvolis_page.id], + name: 'dyvolis_page_why_visit_items_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const dyvolis_page_review_videos = pgTable( + 'dyvolis_page_review_videos', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + src: varchar('src').notNull(), + poster: varchar('poster'), + label: varchar('label'), + }, + (columns) => [ + index('dyvolis_page_review_videos_order_idx').on(columns._order), + index('dyvolis_page_review_videos_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [dyvolis_page.id], + name: 'dyvolis_page_review_videos_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const dyvolis_page = pgTable( + 'dyvolis_page', + { + id: serial('id').primaryKey(), + heroTitle: varchar('hero_title').default('ДивоЛіс – територія магії та фантазії'), + heroDescription: varchar('hero_description').default( + 'Топіарні фігури зроблені з урахуванням важливих деталей, тому ви одразу впізнаєте в них улюблених казкових героїв. Тут можна бігати, стрибати, лазити по фігурках і ставати героями власної казки.' + ), + heroStat: varchar('hero_stat').default('60+'), + heroStatLabel: varchar('hero_stat_label').default( + 'експонатів з безпечних для дітей матеріалів' + ), + workingHours: varchar('working_hours').default('щодня з 11:00 до 20:00'), + galleryQuote: varchar('gallery_quote').default( + 'Це місце – де малеча зустрічає героїв улюблених казок. Простір справжнього дитинства.' + ), + whyVisitTitle: varchar('why_visit_title').default('Чому варто відвідати ДивоЛіс'), + comboDescription: varchar('combo_description').default( + 'Динопарк + Диволіс із казковими топіарними фігурами + Дзеркальний лабіринт' + ), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [index('dyvolis_page_meta_meta_image_idx').on(columns.meta_image)] +) + +export const group_visits_page_groups = pgTable( + 'group_visits_page_groups', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: varchar('id').primaryKey(), + icon: varchar('icon'), + title: varchar('title'), + description: varchar('description'), + minPeople: varchar('min_people'), + discount: varchar('discount'), + }, + (columns) => [ + index('group_visits_page_groups_order_idx').on(columns._order), + index('group_visits_page_groups_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [group_visits_page.id], + name: 'group_visits_page_groups_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const group_visits_page = pgTable( + 'group_visits_page', + { + id: serial('id').primaryKey(), + heroTitle: varchar('hero_title').default('Групові відвідування'), + heroSubtitle: varchar('hero_subtitle').default( + 'Спеціальні умови для організованих груп. Мінімум 10 осіб — максимум вражень.' + ), + formTitle: varchar('form_title').default('Подати заявку на групове відвідування'), + formSubtitle: varchar('form_subtitle').default( + 'Вкажіть кількість учасників та бажану дату — менеджер зателефонує і погодить деталі.' + ), + form: integer('form_id').references(() => forms.id, { + onDelete: 'set null', + }), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + _status: enum_group_visits_page_status('_status').default('draft'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [ + index('group_visits_page_form_idx').on(columns.form), + index('group_visits_page_meta_meta_image_idx').on(columns.meta_image), + index('group_visits_page__status_idx').on(columns._status), + ] +) + +export const _group_visits_page_v_version_groups = pgTable( + '_group_visits_page_v_version_groups', + { + _order: integer('_order').notNull(), + _parentID: integer('_parent_id').notNull(), + id: serial('id').primaryKey(), + icon: varchar('icon'), + title: varchar('title'), + description: varchar('description'), + minPeople: varchar('min_people'), + discount: varchar('discount'), + _uuid: varchar('_uuid'), + }, + (columns) => [ + index('_group_visits_page_v_version_groups_order_idx').on(columns._order), + index('_group_visits_page_v_version_groups_parent_id_idx').on(columns._parentID), + foreignKey({ + columns: [columns['_parentID']], + foreignColumns: [_group_visits_page_v.id], + name: '_group_visits_page_v_version_groups_parent_id_fk', + }).onDelete('cascade'), + ] +) + +export const _group_visits_page_v = pgTable( + '_group_visits_page_v', + { + id: serial('id').primaryKey(), + version_heroTitle: varchar('version_hero_title').default('Групові відвідування'), + version_heroSubtitle: varchar('version_hero_subtitle').default( + 'Спеціальні умови для організованих груп. Мінімум 10 осіб — максимум вражень.' + ), + version_formTitle: varchar('version_form_title').default( + 'Подати заявку на групове відвідування' + ), + version_formSubtitle: varchar('version_form_subtitle').default( + 'Вкажіть кількість учасників та бажану дату — менеджер зателефонує і погодить деталі.' + ), + version_form: integer('version_form_id').references(() => forms.id, { + onDelete: 'set null', + }), + version_meta_title: varchar('version_meta_title'), + version_meta_description: varchar('version_meta_description'), + version_meta_image: integer('version_meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + version__status: enum__group_visits_page_v_version_status('version__status').default('draft'), + version_updatedAt: timestamp('version_updated_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version_createdAt: timestamp('version_created_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + latest: boolean('latest'), + autosave: boolean('autosave'), + }, + (columns) => [ + index('_group_visits_page_v_version_version_form_idx').on(columns.version_form), + index('_group_visits_page_v_version_meta_version_meta_image_idx').on( + columns.version_meta_image + ), + index('_group_visits_page_v_version_version__status_idx').on(columns.version__status), + index('_group_visits_page_v_created_at_idx').on(columns.createdAt), + index('_group_visits_page_v_updated_at_idx').on(columns.updatedAt), + index('_group_visits_page_v_latest_idx').on(columns.latest), + index('_group_visits_page_v_autosave_idx').on(columns.autosave), + ] +) + +export const birthday_page = pgTable( + 'birthday_page', + { + id: serial('id').primaryKey(), + heroTitle: varchar('hero_title').default('Дні народження'), + heroSubtitle: varchar('hero_subtitle').default( + "Зробіть свято незабутнім! Оберіть пакет і наші менеджери зв'яжуться з вами для уточнення деталей." + ), + formTitle: varchar('form_title').default('Замовити святкування'), + formSubtitle: varchar('form_subtitle').default( + "Залиште заявку і наш менеджер зв'яжеться з вами протягом 30 хвилин" + ), + form: integer('form_id').references(() => forms.id, { + onDelete: 'set null', + }), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + _status: enum_birthday_page_status('_status').default('draft'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [ + index('birthday_page_form_idx').on(columns.form), + index('birthday_page_meta_meta_image_idx').on(columns.meta_image), + index('birthday_page__status_idx').on(columns._status), + ] +) + +export const _birthday_page_v = pgTable( + '_birthday_page_v', + { + id: serial('id').primaryKey(), + version_heroTitle: varchar('version_hero_title').default('Дні народження'), + version_heroSubtitle: varchar('version_hero_subtitle').default( + "Зробіть свято незабутнім! Оберіть пакет і наші менеджери зв'яжуться з вами для уточнення деталей." + ), + version_formTitle: varchar('version_form_title').default('Замовити святкування'), + version_formSubtitle: varchar('version_form_subtitle').default( + "Залиште заявку і наш менеджер зв'яжеться з вами протягом 30 хвилин" + ), + version_form: integer('version_form_id').references(() => forms.id, { + onDelete: 'set null', + }), + version_meta_title: varchar('version_meta_title'), + version_meta_description: varchar('version_meta_description'), + version_meta_image: integer('version_meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + version__status: enum__birthday_page_v_version_status('version__status').default('draft'), + version_updatedAt: timestamp('version_updated_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version_createdAt: timestamp('version_created_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + latest: boolean('latest'), + autosave: boolean('autosave'), + }, + (columns) => [ + index('_birthday_page_v_version_version_form_idx').on(columns.version_form), + index('_birthday_page_v_version_meta_version_meta_image_idx').on(columns.version_meta_image), + index('_birthday_page_v_version_version__status_idx').on(columns.version__status), + index('_birthday_page_v_created_at_idx').on(columns.createdAt), + index('_birthday_page_v_updated_at_idx').on(columns.updatedAt), + index('_birthday_page_v_latest_idx').on(columns.latest), + index('_birthday_page_v_autosave_idx').on(columns.autosave), + ] +) + +export const tickets_page = pgTable( + 'tickets_page', + { + id: serial('id').primaryKey(), + heroTitle: varchar('hero_title').default('Купити квиток'), + heroSubtitle: varchar('hero_subtitle').default( + 'Оберіть квиток та придбайте онлайн — без черги на касі' + ), + sectionTitleBirthday: varchar('section_title_birthday').default('Дні народження'), + sectionTitleGroups: varchar('section_title_groups').default('Групові відвідування'), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + _status: enum_tickets_page_status('_status').default('draft'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [ + index('tickets_page_meta_meta_image_idx').on(columns.meta_image), + index('tickets_page__status_idx').on(columns._status), + ] +) + +export const _tickets_page_v = pgTable( + '_tickets_page_v', + { + id: serial('id').primaryKey(), + version_heroTitle: varchar('version_hero_title').default('Купити квиток'), + version_heroSubtitle: varchar('version_hero_subtitle').default( + 'Оберіть квиток та придбайте онлайн — без черги на касі' + ), + version_sectionTitleBirthday: varchar('version_section_title_birthday').default( + 'Дні народження' + ), + version_sectionTitleGroups: varchar('version_section_title_groups').default( + 'Групові відвідування' + ), + version_meta_title: varchar('version_meta_title'), + version_meta_description: varchar('version_meta_description'), + version_meta_image: integer('version_meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + version__status: enum__tickets_page_v_version_status('version__status').default('draft'), + version_updatedAt: timestamp('version_updated_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version_createdAt: timestamp('version_created_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + latest: boolean('latest'), + autosave: boolean('autosave'), + }, + (columns) => [ + index('_tickets_page_v_version_meta_version_meta_image_idx').on(columns.version_meta_image), + index('_tickets_page_v_version_version__status_idx').on(columns.version__status), + index('_tickets_page_v_created_at_idx').on(columns.createdAt), + index('_tickets_page_v_updated_at_idx').on(columns.updatedAt), + index('_tickets_page_v_latest_idx').on(columns.latest), + index('_tickets_page_v_autosave_idx').on(columns.autosave), + ] +) + +export const locations_page = pgTable( + 'locations_page', + { + id: serial('id').primaryKey(), + heroTitle: varchar('hero_title').default('Локації'), + heroSubtitle: varchar('hero_subtitle').default('Неповторні зони розваг для всієї родини'), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + _status: enum_locations_page_status('_status').default('draft'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [ + index('locations_page_meta_meta_image_idx').on(columns.meta_image), + index('locations_page__status_idx').on(columns._status), + ] +) + +export const _locations_page_v = pgTable( + '_locations_page_v', + { + id: serial('id').primaryKey(), + version_heroTitle: varchar('version_hero_title').default('Локації'), + version_heroSubtitle: varchar('version_hero_subtitle').default( + 'Неповторні зони розваг для всієї родини' + ), + version_meta_title: varchar('version_meta_title'), + version_meta_description: varchar('version_meta_description'), + version_meta_image: integer('version_meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + version__status: enum__locations_page_v_version_status('version__status').default('draft'), + version_updatedAt: timestamp('version_updated_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version_createdAt: timestamp('version_created_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + latest: boolean('latest'), + autosave: boolean('autosave'), + }, + (columns) => [ + index('_locations_page_v_version_meta_version_meta_image_idx').on(columns.version_meta_image), + index('_locations_page_v_version_version__status_idx').on(columns.version__status), + index('_locations_page_v_created_at_idx').on(columns.createdAt), + index('_locations_page_v_updated_at_idx').on(columns.updatedAt), + index('_locations_page_v_latest_idx').on(columns.latest), + index('_locations_page_v_autosave_idx').on(columns.autosave), + ] +) + +export const blog_index_page = pgTable( + 'blog_index_page', + { + id: serial('id').primaryKey(), + heroTitle: varchar('hero_title').default('Блог'), + heroSubtitle: varchar('hero_subtitle').default( + 'Новини, статті та корисна інформація від парку Шуміленд' + ), + meta_title: varchar('meta_title'), + meta_description: varchar('meta_description'), + meta_image: integer('meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + _status: enum_blog_index_page_status('_status').default('draft'), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }), + }, + (columns) => [ + index('blog_index_page_meta_meta_image_idx').on(columns.meta_image), + index('blog_index_page__status_idx').on(columns._status), + ] +) + +export const _blog_index_page_v = pgTable( + '_blog_index_page_v', + { + id: serial('id').primaryKey(), + version_heroTitle: varchar('version_hero_title').default('Блог'), + version_heroSubtitle: varchar('version_hero_subtitle').default( + 'Новини, статті та корисна інформація від парку Шуміленд' + ), + version_meta_title: varchar('version_meta_title'), + version_meta_description: varchar('version_meta_description'), + version_meta_image: integer('version_meta_image_id').references(() => media.id, { + onDelete: 'set null', + }), + version__status: enum__blog_index_page_v_version_status('version__status').default('draft'), + version_updatedAt: timestamp('version_updated_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + version_createdAt: timestamp('version_created_at', { + mode: 'string', + withTimezone: true, + precision: 3, + }), + createdAt: timestamp('created_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + updatedAt: timestamp('updated_at', { mode: 'string', withTimezone: true, precision: 3 }) + .defaultNow() + .notNull(), + latest: boolean('latest'), + autosave: boolean('autosave'), + }, + (columns) => [ + index('_blog_index_page_v_version_meta_version_meta_image_idx').on(columns.version_meta_image), + index('_blog_index_page_v_version_version__status_idx').on(columns.version__status), + index('_blog_index_page_v_created_at_idx').on(columns.createdAt), + index('_blog_index_page_v_updated_at_idx').on(columns.updatedAt), + index('_blog_index_page_v_latest_idx').on(columns.latest), + index('_blog_index_page_v_autosave_idx').on(columns.autosave), + ] +) + +export const relations_users_sessions = relations(users_sessions, ({ one }) => ({ + _parentID: one(users, { + fields: [users_sessions._parentID], + references: [users.id], + relationName: 'sessions', + }), +})) +export const relations_users = relations(users, ({ many }) => ({ + sessions: many(users_sessions, { + relationName: 'sessions', + }), +})) +export const relations_media = relations(media, () => ({})) +export const relations_pages_blocks_hero = relations(pages_blocks_hero, ({ one }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_hero._parentID], + references: [pages.id], + relationName: '_blocks_hero', + }), + backgroundImage: one(media, { + fields: [pages_blocks_hero.backgroundImage], + references: [media.id], + relationName: 'backgroundImage', + }), +})) +export const relations_pages_blocks_locations_teaser_locations = relations( + pages_blocks_locations_teaser_locations, + ({ one }) => ({ + _parentID: one(pages_blocks_locations_teaser, { + fields: [pages_blocks_locations_teaser_locations._parentID], + references: [pages_blocks_locations_teaser.id], + relationName: 'locations', + }), + image: one(media, { + fields: [pages_blocks_locations_teaser_locations.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations_pages_blocks_locations_teaser = relations( + pages_blocks_locations_teaser, + ({ one, many }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_locations_teaser._parentID], + references: [pages.id], + relationName: '_blocks_locationsTeaser', + }), + locations: many(pages_blocks_locations_teaser_locations, { + relationName: 'locations', + }), + }) +) +export const relations_pages_blocks_features_items = relations( + pages_blocks_features_items, + ({ one }) => ({ + _parentID: one(pages_blocks_features, { + fields: [pages_blocks_features_items._parentID], + references: [pages_blocks_features.id], + relationName: 'items', + }), + }) +) +export const relations_pages_blocks_features = relations( + pages_blocks_features, + ({ one, many }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_features._parentID], + references: [pages.id], + relationName: '_blocks_features', + }), + items: many(pages_blocks_features_items, { + relationName: 'items', + }), + }) +) +export const relations_pages_blocks_news_block = relations(pages_blocks_news_block, ({ one }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_news_block._parentID], + references: [pages.id], + relationName: '_blocks_newsBlock', + }), +})) +export const relations_pages_blocks_newsletter_form = relations( + pages_blocks_newsletter_form, + ({ one }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_newsletter_form._parentID], + references: [pages.id], + relationName: '_blocks_newsletterForm', + }), + }) +) +export const relations_pages_blocks_gallery_images = relations( + pages_blocks_gallery_images, + ({ one }) => ({ + _parentID: one(pages_blocks_gallery, { + fields: [pages_blocks_gallery_images._parentID], + references: [pages_blocks_gallery.id], + relationName: 'images', + }), + image: one(media, { + fields: [pages_blocks_gallery_images.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations_pages_blocks_gallery = relations(pages_blocks_gallery, ({ one, many }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_gallery._parentID], + references: [pages.id], + relationName: '_blocks_gallery', + }), + images: many(pages_blocks_gallery_images, { + relationName: 'images', + }), +})) +export const relations_pages_blocks_rich_text = relations(pages_blocks_rich_text, ({ one }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_rich_text._parentID], + references: [pages.id], + relationName: '_blocks_richText', + }), +})) +export const relations_pages_blocks_image_block = relations( + pages_blocks_image_block, + ({ one }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_image_block._parentID], + references: [pages.id], + relationName: '_blocks_imageBlock', + }), + image: one(media, { + fields: [pages_blocks_image_block.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations_pages_blocks_video_block = relations( + pages_blocks_video_block, + ({ one }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_video_block._parentID], + references: [pages.id], + relationName: '_blocks_videoBlock', + }), + }) +) +export const relations_pages_blocks_lead_form = relations(pages_blocks_lead_form, ({ one }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_lead_form._parentID], + references: [pages.id], + relationName: '_blocks_leadForm', + }), +})) +export const relations_pages_blocks_pricing_block = relations( + pages_blocks_pricing_block, + ({ one }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_pricing_block._parentID], + references: [pages.id], + relationName: '_blocks_pricingBlock', + }), + }) +) +export const relations_pages_blocks_cta = relations(pages_blocks_cta, ({ one }) => ({ + _parentID: one(pages, { + fields: [pages_blocks_cta._parentID], + references: [pages.id], + relationName: '_blocks_cta', + }), +})) +export const relations_pages = relations(pages, ({ one, many }) => ({ + _blocks_hero: many(pages_blocks_hero, { + relationName: '_blocks_hero', + }), + _blocks_locationsTeaser: many(pages_blocks_locations_teaser, { + relationName: '_blocks_locationsTeaser', + }), + _blocks_features: many(pages_blocks_features, { + relationName: '_blocks_features', + }), + _blocks_newsBlock: many(pages_blocks_news_block, { + relationName: '_blocks_newsBlock', + }), + _blocks_newsletterForm: many(pages_blocks_newsletter_form, { + relationName: '_blocks_newsletterForm', + }), + _blocks_gallery: many(pages_blocks_gallery, { + relationName: '_blocks_gallery', + }), + _blocks_richText: many(pages_blocks_rich_text, { + relationName: '_blocks_richText', + }), + _blocks_imageBlock: many(pages_blocks_image_block, { + relationName: '_blocks_imageBlock', + }), + _blocks_videoBlock: many(pages_blocks_video_block, { + relationName: '_blocks_videoBlock', + }), + _blocks_leadForm: many(pages_blocks_lead_form, { + relationName: '_blocks_leadForm', + }), + _blocks_pricingBlock: many(pages_blocks_pricing_block, { + relationName: '_blocks_pricingBlock', + }), + _blocks_cta: many(pages_blocks_cta, { + relationName: '_blocks_cta', + }), + meta_image: one(media, { + fields: [pages.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations__pages_v_blocks_hero = relations(_pages_v_blocks_hero, ({ one }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_hero._parentID], + references: [_pages_v.id], + relationName: '_blocks_hero', + }), + backgroundImage: one(media, { + fields: [_pages_v_blocks_hero.backgroundImage], + references: [media.id], + relationName: 'backgroundImage', + }), +})) +export const relations__pages_v_blocks_locations_teaser_locations = relations( + _pages_v_blocks_locations_teaser_locations, + ({ one }) => ({ + _parentID: one(_pages_v_blocks_locations_teaser, { + fields: [_pages_v_blocks_locations_teaser_locations._parentID], + references: [_pages_v_blocks_locations_teaser.id], + relationName: 'locations', + }), + image: one(media, { + fields: [_pages_v_blocks_locations_teaser_locations.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations__pages_v_blocks_locations_teaser = relations( + _pages_v_blocks_locations_teaser, + ({ one, many }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_locations_teaser._parentID], + references: [_pages_v.id], + relationName: '_blocks_locationsTeaser', + }), + locations: many(_pages_v_blocks_locations_teaser_locations, { + relationName: 'locations', + }), + }) +) +export const relations__pages_v_blocks_features_items = relations( + _pages_v_blocks_features_items, + ({ one }) => ({ + _parentID: one(_pages_v_blocks_features, { + fields: [_pages_v_blocks_features_items._parentID], + references: [_pages_v_blocks_features.id], + relationName: 'items', + }), + }) +) +export const relations__pages_v_blocks_features = relations( + _pages_v_blocks_features, + ({ one, many }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_features._parentID], + references: [_pages_v.id], + relationName: '_blocks_features', + }), + items: many(_pages_v_blocks_features_items, { + relationName: 'items', + }), + }) +) +export const relations__pages_v_blocks_news_block = relations( + _pages_v_blocks_news_block, + ({ one }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_news_block._parentID], + references: [_pages_v.id], + relationName: '_blocks_newsBlock', + }), + }) +) +export const relations__pages_v_blocks_newsletter_form = relations( + _pages_v_blocks_newsletter_form, + ({ one }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_newsletter_form._parentID], + references: [_pages_v.id], + relationName: '_blocks_newsletterForm', + }), + }) +) +export const relations__pages_v_blocks_gallery_images = relations( + _pages_v_blocks_gallery_images, + ({ one }) => ({ + _parentID: one(_pages_v_blocks_gallery, { + fields: [_pages_v_blocks_gallery_images._parentID], + references: [_pages_v_blocks_gallery.id], + relationName: 'images', + }), + image: one(media, { + fields: [_pages_v_blocks_gallery_images.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations__pages_v_blocks_gallery = relations( + _pages_v_blocks_gallery, + ({ one, many }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_gallery._parentID], + references: [_pages_v.id], + relationName: '_blocks_gallery', + }), + images: many(_pages_v_blocks_gallery_images, { + relationName: 'images', + }), + }) +) +export const relations__pages_v_blocks_rich_text = relations( + _pages_v_blocks_rich_text, + ({ one }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_rich_text._parentID], + references: [_pages_v.id], + relationName: '_blocks_richText', + }), + }) +) +export const relations__pages_v_blocks_image_block = relations( + _pages_v_blocks_image_block, + ({ one }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_image_block._parentID], + references: [_pages_v.id], + relationName: '_blocks_imageBlock', + }), + image: one(media, { + fields: [_pages_v_blocks_image_block.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations__pages_v_blocks_video_block = relations( + _pages_v_blocks_video_block, + ({ one }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_video_block._parentID], + references: [_pages_v.id], + relationName: '_blocks_videoBlock', + }), + }) +) +export const relations__pages_v_blocks_lead_form = relations( + _pages_v_blocks_lead_form, + ({ one }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_lead_form._parentID], + references: [_pages_v.id], + relationName: '_blocks_leadForm', + }), + }) +) +export const relations__pages_v_blocks_pricing_block = relations( + _pages_v_blocks_pricing_block, + ({ one }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_pricing_block._parentID], + references: [_pages_v.id], + relationName: '_blocks_pricingBlock', + }), + }) +) +export const relations__pages_v_blocks_cta = relations(_pages_v_blocks_cta, ({ one }) => ({ + _parentID: one(_pages_v, { + fields: [_pages_v_blocks_cta._parentID], + references: [_pages_v.id], + relationName: '_blocks_cta', + }), +})) +export const relations__pages_v = relations(_pages_v, ({ one, many }) => ({ + parent: one(pages, { + fields: [_pages_v.parent], + references: [pages.id], + relationName: 'parent', + }), + _blocks_hero: many(_pages_v_blocks_hero, { + relationName: '_blocks_hero', + }), + _blocks_locationsTeaser: many(_pages_v_blocks_locations_teaser, { + relationName: '_blocks_locationsTeaser', + }), + _blocks_features: many(_pages_v_blocks_features, { + relationName: '_blocks_features', + }), + _blocks_newsBlock: many(_pages_v_blocks_news_block, { + relationName: '_blocks_newsBlock', + }), + _blocks_newsletterForm: many(_pages_v_blocks_newsletter_form, { + relationName: '_blocks_newsletterForm', + }), + _blocks_gallery: many(_pages_v_blocks_gallery, { + relationName: '_blocks_gallery', + }), + _blocks_richText: many(_pages_v_blocks_rich_text, { + relationName: '_blocks_richText', + }), + _blocks_imageBlock: many(_pages_v_blocks_image_block, { + relationName: '_blocks_imageBlock', + }), + _blocks_videoBlock: many(_pages_v_blocks_video_block, { + relationName: '_blocks_videoBlock', + }), + _blocks_leadForm: many(_pages_v_blocks_lead_form, { + relationName: '_blocks_leadForm', + }), + _blocks_pricingBlock: many(_pages_v_blocks_pricing_block, { + relationName: '_blocks_pricingBlock', + }), + _blocks_cta: many(_pages_v_blocks_cta, { + relationName: '_blocks_cta', + }), + version_meta_image: one(media, { + fields: [_pages_v.version_meta_image], + references: [media.id], + relationName: 'version_meta_image', + }), +})) +export const relations_blog_posts_rels = relations(blog_posts_rels, ({ one }) => ({ + parent: one(blog_posts, { + fields: [blog_posts_rels.parent], + references: [blog_posts.id], + relationName: '_rels', + }), + categoriesID: one(categories, { + fields: [blog_posts_rels.categoriesID], + references: [categories.id], + relationName: 'categories', + }), + tagsID: one(tags, { + fields: [blog_posts_rels.tagsID], + references: [tags.id], + relationName: 'tags', + }), +})) +export const relations_blog_posts = relations(blog_posts, ({ one, many }) => ({ + hero: one(media, { + fields: [blog_posts.hero], + references: [media.id], + relationName: 'hero', + }), + meta_image: one(media, { + fields: [blog_posts.meta_image], + references: [media.id], + relationName: 'meta_image', + }), + _rels: many(blog_posts_rels, { + relationName: '_rels', + }), +})) +export const relations__blog_posts_v_rels = relations(_blog_posts_v_rels, ({ one }) => ({ + parent: one(_blog_posts_v, { + fields: [_blog_posts_v_rels.parent], + references: [_blog_posts_v.id], + relationName: '_rels', + }), + categoriesID: one(categories, { + fields: [_blog_posts_v_rels.categoriesID], + references: [categories.id], + relationName: 'categories', + }), + tagsID: one(tags, { + fields: [_blog_posts_v_rels.tagsID], + references: [tags.id], + relationName: 'tags', + }), +})) +export const relations__blog_posts_v = relations(_blog_posts_v, ({ one, many }) => ({ + parent: one(blog_posts, { + fields: [_blog_posts_v.parent], + references: [blog_posts.id], + relationName: 'parent', + }), + version_hero: one(media, { + fields: [_blog_posts_v.version_hero], + references: [media.id], + relationName: 'version_hero', + }), + version_meta_image: one(media, { + fields: [_blog_posts_v.version_meta_image], + references: [media.id], + relationName: 'version_meta_image', + }), + _rels: many(_blog_posts_v_rels, { + relationName: '_rels', + }), +})) +export const relations_categories = relations(categories, () => ({})) +export const relations_tags = relations(tags, () => ({})) +export const relations_tariffs = relations(tariffs, ({ one }) => ({ + image: one(media, { + fields: [tariffs.image], + references: [media.id], + relationName: 'image', + }), +})) +export const relations_leads = relations(leads, () => ({})) +export const relations_orders_items = relations(orders_items, ({ one }) => ({ + _parentID: one(orders, { + fields: [orders_items._parentID], + references: [orders.id], + relationName: 'items', + }), +})) +export const relations_orders = relations(orders, ({ many }) => ({ + items: many(orders_items, { + relationName: 'items', + }), +})) +export const relations_locations_gallery = relations(locations_gallery, ({ one }) => ({ + _parentID: one(locations, { + fields: [locations_gallery._parentID], + references: [locations.id], + relationName: 'gallery', + }), + image: one(media, { + fields: [locations_gallery.image], + references: [media.id], + relationName: 'image', + }), +})) +export const relations_locations_hero_tips = relations(locations_hero_tips, ({ one }) => ({ + _parentID: one(locations, { + fields: [locations_hero_tips._parentID], + references: [locations.id], + relationName: 'heroTips', + }), +})) +export const relations_locations_why_visit_items = relations( + locations_why_visit_items, + ({ one }) => ({ + _parentID: one(locations, { + fields: [locations_why_visit_items._parentID], + references: [locations.id], + relationName: 'whyVisitItems', + }), + }) +) +export const relations_locations_review_videos = relations(locations_review_videos, ({ one }) => ({ + _parentID: one(locations, { + fields: [locations_review_videos._parentID], + references: [locations.id], + relationName: 'reviewVideos', + }), +})) +export const relations_locations = relations(locations, ({ one, many }) => ({ + image: one(media, { + fields: [locations.image], + references: [media.id], + relationName: 'image', + }), + gallery: many(locations_gallery, { + relationName: 'gallery', + }), + heroBackground: one(media, { + fields: [locations.heroBackground], + references: [media.id], + relationName: 'heroBackground', + }), + heroTips: many(locations_hero_tips, { + relationName: 'heroTips', + }), + whyVisitItems: many(locations_why_visit_items, { + relationName: 'whyVisitItems', + }), + reviewVideos: many(locations_review_videos, { + relationName: 'reviewVideos', + }), + meta_image: one(media, { + fields: [locations.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations_reviews = relations(reviews, ({ one }) => ({ + avatarBg: one(media, { + fields: [reviews.avatarBg], + references: [media.id], + relationName: 'avatarBg', + }), +})) +export const relations_birthday_packages_features = relations( + birthday_packages_features, + ({ one }) => ({ + _parentID: one(birthday_packages, { + fields: [birthday_packages_features._parentID], + references: [birthday_packages.id], + relationName: 'features', + }), + }) +) +export const relations_birthday_packages = relations(birthday_packages, ({ many }) => ({ + features: many(birthday_packages_features, { + relationName: 'features', + }), +})) +export const relations_redirects_rels = relations(redirects_rels, ({ one }) => ({ + parent: one(redirects, { + fields: [redirects_rels.parent], + references: [redirects.id], + relationName: '_rels', + }), + pagesID: one(pages, { + fields: [redirects_rels.pagesID], + references: [pages.id], + relationName: 'pages', + }), +})) +export const relations_redirects = relations(redirects, ({ many }) => ({ + _rels: many(redirects_rels, { + relationName: '_rels', + }), +})) +export const relations_forms_blocks_checkbox = relations(forms_blocks_checkbox, ({ one }) => ({ + _parentID: one(forms, { + fields: [forms_blocks_checkbox._parentID], + references: [forms.id], + relationName: '_blocks_checkbox', + }), +})) +export const relations_forms_blocks_email = relations(forms_blocks_email, ({ one }) => ({ + _parentID: one(forms, { + fields: [forms_blocks_email._parentID], + references: [forms.id], + relationName: '_blocks_email', + }), +})) +export const relations_forms_blocks_message = relations(forms_blocks_message, ({ one }) => ({ + _parentID: one(forms, { + fields: [forms_blocks_message._parentID], + references: [forms.id], + relationName: '_blocks_message', + }), +})) +export const relations_forms_blocks_number = relations(forms_blocks_number, ({ one }) => ({ + _parentID: one(forms, { + fields: [forms_blocks_number._parentID], + references: [forms.id], + relationName: '_blocks_number', + }), +})) +export const relations_forms_blocks_select_options = relations( + forms_blocks_select_options, + ({ one }) => ({ + _parentID: one(forms_blocks_select, { + fields: [forms_blocks_select_options._parentID], + references: [forms_blocks_select.id], + relationName: 'options', + }), + }) +) +export const relations_forms_blocks_select = relations(forms_blocks_select, ({ one, many }) => ({ + _parentID: one(forms, { + fields: [forms_blocks_select._parentID], + references: [forms.id], + relationName: '_blocks_select', + }), + options: many(forms_blocks_select_options, { + relationName: 'options', + }), +})) +export const relations_forms_blocks_text = relations(forms_blocks_text, ({ one }) => ({ + _parentID: one(forms, { + fields: [forms_blocks_text._parentID], + references: [forms.id], + relationName: '_blocks_text', + }), +})) +export const relations_forms_blocks_textarea = relations(forms_blocks_textarea, ({ one }) => ({ + _parentID: one(forms, { + fields: [forms_blocks_textarea._parentID], + references: [forms.id], + relationName: '_blocks_textarea', + }), +})) +export const relations_forms_blocks_radio_options = relations( + forms_blocks_radio_options, + ({ one }) => ({ + _parentID: one(forms_blocks_radio, { + fields: [forms_blocks_radio_options._parentID], + references: [forms_blocks_radio.id], + relationName: 'options', + }), + }) +) +export const relations_forms_blocks_radio = relations(forms_blocks_radio, ({ one, many }) => ({ + _parentID: one(forms, { + fields: [forms_blocks_radio._parentID], + references: [forms.id], + relationName: '_blocks_radio', + }), + options: many(forms_blocks_radio_options, { + relationName: 'options', + }), +})) +export const relations_forms_blocks_date = relations(forms_blocks_date, ({ one }) => ({ + _parentID: one(forms, { + fields: [forms_blocks_date._parentID], + references: [forms.id], + relationName: '_blocks_date', + }), +})) +export const relations_forms_emails = relations(forms_emails, ({ one }) => ({ + _parentID: one(forms, { + fields: [forms_emails._parentID], + references: [forms.id], + relationName: 'emails', + }), +})) +export const relations_forms_rels = relations(forms_rels, ({ one }) => ({ + parent: one(forms, { + fields: [forms_rels.parent], + references: [forms.id], + relationName: '_rels', + }), + pagesID: one(pages, { + fields: [forms_rels.pagesID], + references: [pages.id], + relationName: 'pages', + }), +})) +export const relations_forms = relations(forms, ({ many }) => ({ + _blocks_checkbox: many(forms_blocks_checkbox, { + relationName: '_blocks_checkbox', + }), + _blocks_email: many(forms_blocks_email, { + relationName: '_blocks_email', + }), + _blocks_message: many(forms_blocks_message, { + relationName: '_blocks_message', + }), + _blocks_number: many(forms_blocks_number, { + relationName: '_blocks_number', + }), + _blocks_select: many(forms_blocks_select, { + relationName: '_blocks_select', + }), + _blocks_text: many(forms_blocks_text, { + relationName: '_blocks_text', + }), + _blocks_textarea: many(forms_blocks_textarea, { + relationName: '_blocks_textarea', + }), + _blocks_radio: many(forms_blocks_radio, { + relationName: '_blocks_radio', + }), + _blocks_date: many(forms_blocks_date, { + relationName: '_blocks_date', + }), + emails: many(forms_emails, { + relationName: 'emails', + }), + _rels: many(forms_rels, { + relationName: '_rels', + }), +})) +export const relations_form_submissions_submission_data = relations( + form_submissions_submission_data, + ({ one }) => ({ + _parentID: one(form_submissions, { + fields: [form_submissions_submission_data._parentID], + references: [form_submissions.id], + relationName: 'submissionData', + }), + }) +) +export const relations_form_submissions = relations(form_submissions, ({ one, many }) => ({ + form: one(forms, { + fields: [form_submissions.form], + references: [forms.id], + relationName: 'form', + }), + submissionData: many(form_submissions_submission_data, { + relationName: 'submissionData', + }), +})) +export const relations_payload_kv = relations(payload_kv, () => ({})) +export const relations_payload_locked_documents_rels = relations( + payload_locked_documents_rels, + ({ one }) => ({ + parent: one(payload_locked_documents, { + fields: [payload_locked_documents_rels.parent], + references: [payload_locked_documents.id], + relationName: '_rels', + }), + usersID: one(users, { + fields: [payload_locked_documents_rels.usersID], + references: [users.id], + relationName: 'users', + }), + mediaID: one(media, { + fields: [payload_locked_documents_rels.mediaID], + references: [media.id], + relationName: 'media', + }), + pagesID: one(pages, { + fields: [payload_locked_documents_rels.pagesID], + references: [pages.id], + relationName: 'pages', + }), + 'blog-postsID': one(blog_posts, { + fields: [payload_locked_documents_rels['blog-postsID']], + references: [blog_posts.id], + relationName: 'blog-posts', + }), + categoriesID: one(categories, { + fields: [payload_locked_documents_rels.categoriesID], + references: [categories.id], + relationName: 'categories', + }), + tagsID: one(tags, { + fields: [payload_locked_documents_rels.tagsID], + references: [tags.id], + relationName: 'tags', + }), + tariffsID: one(tariffs, { + fields: [payload_locked_documents_rels.tariffsID], + references: [tariffs.id], + relationName: 'tariffs', + }), + leadsID: one(leads, { + fields: [payload_locked_documents_rels.leadsID], + references: [leads.id], + relationName: 'leads', + }), + ordersID: one(orders, { + fields: [payload_locked_documents_rels.ordersID], + references: [orders.id], + relationName: 'orders', + }), + locationsID: one(locations, { + fields: [payload_locked_documents_rels.locationsID], + references: [locations.id], + relationName: 'locations', + }), + reviewsID: one(reviews, { + fields: [payload_locked_documents_rels.reviewsID], + references: [reviews.id], + relationName: 'reviews', + }), + 'birthday-packagesID': one(birthday_packages, { + fields: [payload_locked_documents_rels['birthday-packagesID']], + references: [birthday_packages.id], + relationName: 'birthday-packages', + }), + redirectsID: one(redirects, { + fields: [payload_locked_documents_rels.redirectsID], + references: [redirects.id], + relationName: 'redirects', + }), + formsID: one(forms, { + fields: [payload_locked_documents_rels.formsID], + references: [forms.id], + relationName: 'forms', + }), + 'form-submissionsID': one(form_submissions, { + fields: [payload_locked_documents_rels['form-submissionsID']], + references: [form_submissions.id], + relationName: 'form-submissions', + }), + }) +) +export const relations_payload_locked_documents = relations( + payload_locked_documents, + ({ many }) => ({ + _rels: many(payload_locked_documents_rels, { + relationName: '_rels', + }), + }) +) +export const relations_payload_preferences_rels = relations( + payload_preferences_rels, + ({ one }) => ({ + parent: one(payload_preferences, { + fields: [payload_preferences_rels.parent], + references: [payload_preferences.id], + relationName: '_rels', + }), + usersID: one(users, { + fields: [payload_preferences_rels.usersID], + references: [users.id], + relationName: 'users', + }), + }) +) +export const relations_payload_preferences = relations(payload_preferences, ({ many }) => ({ + _rels: many(payload_preferences_rels, { + relationName: '_rels', + }), +})) +export const relations_payload_migrations = relations(payload_migrations, () => ({})) +export const relations_home_page_why_parents_items = relations( + home_page_why_parents_items, + ({ one }) => ({ + _parentID: one(home_page, { + fields: [home_page_why_parents_items._parentID], + references: [home_page.id], + relationName: 'whyParents_items', + }), + }) +) +export const relations_home_page_why_parents_side_gallery = relations( + home_page_why_parents_side_gallery, + ({ one }) => ({ + _parentID: one(home_page, { + fields: [home_page_why_parents_side_gallery._parentID], + references: [home_page.id], + relationName: 'whyParents_sideGallery', + }), + image: one(media, { + fields: [home_page_why_parents_side_gallery.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations_home_page_gallery_images = relations( + home_page_gallery_images, + ({ one }) => ({ + _parentID: one(home_page, { + fields: [home_page_gallery_images._parentID], + references: [home_page.id], + relationName: 'gallery_images', + }), + image: one(media, { + fields: [home_page_gallery_images.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations_home_page = relations(home_page, ({ one, many }) => ({ + hero_backgroundImage: one(media, { + fields: [home_page.hero_backgroundImage], + references: [media.id], + relationName: 'hero_backgroundImage', + }), + hero_foregroundOverlay: one(media, { + fields: [home_page.hero_foregroundOverlay], + references: [media.id], + relationName: 'hero_foregroundOverlay', + }), + hero_silhouetteOverlay: one(media, { + fields: [home_page.hero_silhouetteOverlay], + references: [media.id], + relationName: 'hero_silhouetteOverlay', + }), + pageHero_backgroundImage: one(media, { + fields: [home_page.pageHero_backgroundImage], + references: [media.id], + relationName: 'pageHero_backgroundImage', + }), + whyParents_items: many(home_page_why_parents_items, { + relationName: 'whyParents_items', + }), + whyParents_sideGallery: many(home_page_why_parents_side_gallery, { + relationName: 'whyParents_sideGallery', + }), + gallery_images: many(home_page_gallery_images, { + relationName: 'gallery_images', + }), + video_poster: one(media, { + fields: [home_page.video_poster], + references: [media.id], + relationName: 'video_poster', + }), + meta_image: one(media, { + fields: [home_page.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations__home_page_v_version_why_parents_items = relations( + _home_page_v_version_why_parents_items, + ({ one }) => ({ + _parentID: one(_home_page_v, { + fields: [_home_page_v_version_why_parents_items._parentID], + references: [_home_page_v.id], + relationName: 'version_whyParents_items', + }), + }) +) +export const relations__home_page_v_version_why_parents_side_gallery = relations( + _home_page_v_version_why_parents_side_gallery, + ({ one }) => ({ + _parentID: one(_home_page_v, { + fields: [_home_page_v_version_why_parents_side_gallery._parentID], + references: [_home_page_v.id], + relationName: 'version_whyParents_sideGallery', + }), + image: one(media, { + fields: [_home_page_v_version_why_parents_side_gallery.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations__home_page_v_version_gallery_images = relations( + _home_page_v_version_gallery_images, + ({ one }) => ({ + _parentID: one(_home_page_v, { + fields: [_home_page_v_version_gallery_images._parentID], + references: [_home_page_v.id], + relationName: 'version_gallery_images', + }), + image: one(media, { + fields: [_home_page_v_version_gallery_images.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations__home_page_v = relations(_home_page_v, ({ one, many }) => ({ + version_hero_backgroundImage: one(media, { + fields: [_home_page_v.version_hero_backgroundImage], + references: [media.id], + relationName: 'version_hero_backgroundImage', + }), + version_hero_foregroundOverlay: one(media, { + fields: [_home_page_v.version_hero_foregroundOverlay], + references: [media.id], + relationName: 'version_hero_foregroundOverlay', + }), + version_hero_silhouetteOverlay: one(media, { + fields: [_home_page_v.version_hero_silhouetteOverlay], + references: [media.id], + relationName: 'version_hero_silhouetteOverlay', + }), + version_pageHero_backgroundImage: one(media, { + fields: [_home_page_v.version_pageHero_backgroundImage], + references: [media.id], + relationName: 'version_pageHero_backgroundImage', + }), + version_whyParents_items: many(_home_page_v_version_why_parents_items, { + relationName: 'version_whyParents_items', + }), + version_whyParents_sideGallery: many(_home_page_v_version_why_parents_side_gallery, { + relationName: 'version_whyParents_sideGallery', + }), + version_gallery_images: many(_home_page_v_version_gallery_images, { + relationName: 'version_gallery_images', + }), + version_video_poster: one(media, { + fields: [_home_page_v.version_video_poster], + references: [media.id], + relationName: 'version_video_poster', + }), + version_meta_image: one(media, { + fields: [_home_page_v.version_meta_image], + references: [media.id], + relationName: 'version_meta_image', + }), +})) +export const relations_checkout_page = relations(checkout_page, ({ one }) => ({ + meta_image: one(media, { + fields: [checkout_page.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations_thank_you_page = relations(thank_you_page, ({ one }) => ({ + meta_image: one(media, { + fields: [thank_you_page.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations_header_nav_links_children = relations( + header_nav_links_children, + ({ one }) => ({ + _parentID: one(header_nav_links, { + fields: [header_nav_links_children._parentID], + references: [header_nav_links.id], + relationName: 'children', + }), + }) +) +export const relations_header_nav_links = relations(header_nav_links, ({ one, many }) => ({ + _parentID: one(header, { + fields: [header_nav_links._parentID], + references: [header.id], + relationName: 'navLinks', + }), + children: many(header_nav_links_children, { + relationName: 'children', + }), +})) +export const relations_header = relations(header, ({ one, many }) => ({ + logo: one(media, { + fields: [header.logo], + references: [media.id], + relationName: 'logo', + }), + navLinks: many(header_nav_links, { + relationName: 'navLinks', + }), +})) +export const relations_footer_nav_links = relations(footer_nav_links, ({ one }) => ({ + _parentID: one(footer, { + fields: [footer_nav_links._parentID], + references: [footer.id], + relationName: 'navLinks', + }), +})) +export const relations_footer_socials = relations(footer_socials, ({ one }) => ({ + _parentID: one(footer, { + fields: [footer_socials._parentID], + references: [footer.id], + relationName: 'socials', + }), +})) +export const relations_footer = relations(footer, ({ one, many }) => ({ + logo: one(media, { + fields: [footer.logo], + references: [media.id], + relationName: 'logo', + }), + navLinks: many(footer_nav_links, { + relationName: 'navLinks', + }), + socials: many(footer_socials, { + relationName: 'socials', + }), +})) +export const relations_site_settings_tariff_category_labels = relations( + site_settings_tariff_category_labels, + ({ one }) => ({ + _parentID: one(site_settings, { + fields: [site_settings_tariff_category_labels._parentID], + references: [site_settings.id], + relationName: 'tariffCategoryLabels', + }), + }) +) +export const relations_site_settings = relations(site_settings, ({ one, many }) => ({ + defaultOgImage: one(media, { + fields: [site_settings.defaultOgImage], + references: [media.id], + relationName: 'defaultOgImage', + }), + tariffCategoryLabels: many(site_settings_tariff_category_labels, { + relationName: 'tariffCategoryLabels', + }), +})) +export const relations_dyvolis_page_hero_tips = relations(dyvolis_page_hero_tips, ({ one }) => ({ + _parentID: one(dyvolis_page, { + fields: [dyvolis_page_hero_tips._parentID], + references: [dyvolis_page.id], + relationName: 'heroTips', + }), +})) +export const relations_dyvolis_page_gallery_images = relations( + dyvolis_page_gallery_images, + ({ one }) => ({ + _parentID: one(dyvolis_page, { + fields: [dyvolis_page_gallery_images._parentID], + references: [dyvolis_page.id], + relationName: 'galleryImages', + }), + image: one(media, { + fields: [dyvolis_page_gallery_images.image], + references: [media.id], + relationName: 'image', + }), + }) +) +export const relations_dyvolis_page_why_visit_items = relations( + dyvolis_page_why_visit_items, + ({ one }) => ({ + _parentID: one(dyvolis_page, { + fields: [dyvolis_page_why_visit_items._parentID], + references: [dyvolis_page.id], + relationName: 'whyVisitItems', + }), + }) +) +export const relations_dyvolis_page_review_videos = relations( + dyvolis_page_review_videos, + ({ one }) => ({ + _parentID: one(dyvolis_page, { + fields: [dyvolis_page_review_videos._parentID], + references: [dyvolis_page.id], + relationName: 'reviewVideos', + }), + }) +) +export const relations_dyvolis_page = relations(dyvolis_page, ({ one, many }) => ({ + heroTips: many(dyvolis_page_hero_tips, { + relationName: 'heroTips', + }), + galleryImages: many(dyvolis_page_gallery_images, { + relationName: 'galleryImages', + }), + whyVisitItems: many(dyvolis_page_why_visit_items, { + relationName: 'whyVisitItems', + }), + reviewVideos: many(dyvolis_page_review_videos, { + relationName: 'reviewVideos', + }), + meta_image: one(media, { + fields: [dyvolis_page.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations_group_visits_page_groups = relations( + group_visits_page_groups, + ({ one }) => ({ + _parentID: one(group_visits_page, { + fields: [group_visits_page_groups._parentID], + references: [group_visits_page.id], + relationName: 'groups', + }), + }) +) +export const relations_group_visits_page = relations(group_visits_page, ({ one, many }) => ({ + groups: many(group_visits_page_groups, { + relationName: 'groups', + }), + form: one(forms, { + fields: [group_visits_page.form], + references: [forms.id], + relationName: 'form', + }), + meta_image: one(media, { + fields: [group_visits_page.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations__group_visits_page_v_version_groups = relations( + _group_visits_page_v_version_groups, + ({ one }) => ({ + _parentID: one(_group_visits_page_v, { + fields: [_group_visits_page_v_version_groups._parentID], + references: [_group_visits_page_v.id], + relationName: 'version_groups', + }), + }) +) +export const relations__group_visits_page_v = relations(_group_visits_page_v, ({ one, many }) => ({ + version_groups: many(_group_visits_page_v_version_groups, { + relationName: 'version_groups', + }), + version_form: one(forms, { + fields: [_group_visits_page_v.version_form], + references: [forms.id], + relationName: 'version_form', + }), + version_meta_image: one(media, { + fields: [_group_visits_page_v.version_meta_image], + references: [media.id], + relationName: 'version_meta_image', + }), +})) +export const relations_birthday_page = relations(birthday_page, ({ one }) => ({ + form: one(forms, { + fields: [birthday_page.form], + references: [forms.id], + relationName: 'form', + }), + meta_image: one(media, { + fields: [birthday_page.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations__birthday_page_v = relations(_birthday_page_v, ({ one }) => ({ + version_form: one(forms, { + fields: [_birthday_page_v.version_form], + references: [forms.id], + relationName: 'version_form', + }), + version_meta_image: one(media, { + fields: [_birthday_page_v.version_meta_image], + references: [media.id], + relationName: 'version_meta_image', + }), +})) +export const relations_tickets_page = relations(tickets_page, ({ one }) => ({ + meta_image: one(media, { + fields: [tickets_page.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations__tickets_page_v = relations(_tickets_page_v, ({ one }) => ({ + version_meta_image: one(media, { + fields: [_tickets_page_v.version_meta_image], + references: [media.id], + relationName: 'version_meta_image', + }), +})) +export const relations_locations_page = relations(locations_page, ({ one }) => ({ + meta_image: one(media, { + fields: [locations_page.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations__locations_page_v = relations(_locations_page_v, ({ one }) => ({ + version_meta_image: one(media, { + fields: [_locations_page_v.version_meta_image], + references: [media.id], + relationName: 'version_meta_image', + }), +})) +export const relations_blog_index_page = relations(blog_index_page, ({ one }) => ({ + meta_image: one(media, { + fields: [blog_index_page.meta_image], + references: [media.id], + relationName: 'meta_image', + }), +})) +export const relations__blog_index_page_v = relations(_blog_index_page_v, ({ one }) => ({ + version_meta_image: one(media, { + fields: [_blog_index_page_v.version_meta_image], + references: [media.id], + relationName: 'version_meta_image', + }), +})) + +type DatabaseSchema = { + enum_users_role: typeof enum_users_role + enum_pages_blocks_hero_background_type: typeof enum_pages_blocks_hero_background_type + enum_pages_blocks_cta_variant: typeof enum_pages_blocks_cta_variant + enum_pages_status: typeof enum_pages_status + enum__pages_v_blocks_hero_background_type: typeof enum__pages_v_blocks_hero_background_type + enum__pages_v_blocks_cta_variant: typeof enum__pages_v_blocks_cta_variant + enum__pages_v_version_status: typeof enum__pages_v_version_status + enum_blog_posts_status: typeof enum_blog_posts_status + enum__blog_posts_v_version_status: typeof enum__blog_posts_v_version_status + enum_tariffs_category_tag: typeof enum_tariffs_category_tag + enum_leads_status: typeof enum_leads_status + enum_orders_status: typeof enum_orders_status + enum_reviews_source: typeof enum_reviews_source + enum_redirects_to_type: typeof enum_redirects_to_type + enum_redirects_type: typeof enum_redirects_type + enum_forms_confirmation_type: typeof enum_forms_confirmation_type + enum_forms_redirect_type: typeof enum_forms_redirect_type + enum_home_page_status: typeof enum_home_page_status + enum__home_page_v_version_status: typeof enum__home_page_v_version_status + enum_header_nav_links_auto_children_from: typeof enum_header_nav_links_auto_children_from + enum_footer_socials_platform: typeof enum_footer_socials_platform + enum_group_visits_page_status: typeof enum_group_visits_page_status + enum__group_visits_page_v_version_status: typeof enum__group_visits_page_v_version_status + enum_birthday_page_status: typeof enum_birthday_page_status + enum__birthday_page_v_version_status: typeof enum__birthday_page_v_version_status + enum_tickets_page_status: typeof enum_tickets_page_status + enum__tickets_page_v_version_status: typeof enum__tickets_page_v_version_status + enum_locations_page_status: typeof enum_locations_page_status + enum__locations_page_v_version_status: typeof enum__locations_page_v_version_status + enum_blog_index_page_status: typeof enum_blog_index_page_status + enum__blog_index_page_v_version_status: typeof enum__blog_index_page_v_version_status + users_sessions: typeof users_sessions + users: typeof users + media: typeof media + pages_blocks_hero: typeof pages_blocks_hero + pages_blocks_locations_teaser_locations: typeof pages_blocks_locations_teaser_locations + pages_blocks_locations_teaser: typeof pages_blocks_locations_teaser + pages_blocks_features_items: typeof pages_blocks_features_items + pages_blocks_features: typeof pages_blocks_features + pages_blocks_news_block: typeof pages_blocks_news_block + pages_blocks_newsletter_form: typeof pages_blocks_newsletter_form + pages_blocks_gallery_images: typeof pages_blocks_gallery_images + pages_blocks_gallery: typeof pages_blocks_gallery + pages_blocks_rich_text: typeof pages_blocks_rich_text + pages_blocks_image_block: typeof pages_blocks_image_block + pages_blocks_video_block: typeof pages_blocks_video_block + pages_blocks_lead_form: typeof pages_blocks_lead_form + pages_blocks_pricing_block: typeof pages_blocks_pricing_block + pages_blocks_cta: typeof pages_blocks_cta + pages: typeof pages + _pages_v_blocks_hero: typeof _pages_v_blocks_hero + _pages_v_blocks_locations_teaser_locations: typeof _pages_v_blocks_locations_teaser_locations + _pages_v_blocks_locations_teaser: typeof _pages_v_blocks_locations_teaser + _pages_v_blocks_features_items: typeof _pages_v_blocks_features_items + _pages_v_blocks_features: typeof _pages_v_blocks_features + _pages_v_blocks_news_block: typeof _pages_v_blocks_news_block + _pages_v_blocks_newsletter_form: typeof _pages_v_blocks_newsletter_form + _pages_v_blocks_gallery_images: typeof _pages_v_blocks_gallery_images + _pages_v_blocks_gallery: typeof _pages_v_blocks_gallery + _pages_v_blocks_rich_text: typeof _pages_v_blocks_rich_text + _pages_v_blocks_image_block: typeof _pages_v_blocks_image_block + _pages_v_blocks_video_block: typeof _pages_v_blocks_video_block + _pages_v_blocks_lead_form: typeof _pages_v_blocks_lead_form + _pages_v_blocks_pricing_block: typeof _pages_v_blocks_pricing_block + _pages_v_blocks_cta: typeof _pages_v_blocks_cta + _pages_v: typeof _pages_v + blog_posts: typeof blog_posts + blog_posts_rels: typeof blog_posts_rels + _blog_posts_v: typeof _blog_posts_v + _blog_posts_v_rels: typeof _blog_posts_v_rels + categories: typeof categories + tags: typeof tags + tariffs: typeof tariffs + leads: typeof leads + orders_items: typeof orders_items + orders: typeof orders + locations_gallery: typeof locations_gallery + locations_hero_tips: typeof locations_hero_tips + locations_why_visit_items: typeof locations_why_visit_items + locations_review_videos: typeof locations_review_videos + locations: typeof locations + reviews: typeof reviews + birthday_packages_features: typeof birthday_packages_features + birthday_packages: typeof birthday_packages + redirects: typeof redirects + redirects_rels: typeof redirects_rels + forms_blocks_checkbox: typeof forms_blocks_checkbox + forms_blocks_email: typeof forms_blocks_email + forms_blocks_message: typeof forms_blocks_message + forms_blocks_number: typeof forms_blocks_number + forms_blocks_select_options: typeof forms_blocks_select_options + forms_blocks_select: typeof forms_blocks_select + forms_blocks_text: typeof forms_blocks_text + forms_blocks_textarea: typeof forms_blocks_textarea + forms_blocks_radio_options: typeof forms_blocks_radio_options + forms_blocks_radio: typeof forms_blocks_radio + forms_blocks_date: typeof forms_blocks_date + forms_emails: typeof forms_emails + forms: typeof forms + forms_rels: typeof forms_rels + form_submissions_submission_data: typeof form_submissions_submission_data + form_submissions: typeof form_submissions + payload_kv: typeof payload_kv + payload_locked_documents: typeof payload_locked_documents + payload_locked_documents_rels: typeof payload_locked_documents_rels + payload_preferences: typeof payload_preferences + payload_preferences_rels: typeof payload_preferences_rels + payload_migrations: typeof payload_migrations + home_page_why_parents_items: typeof home_page_why_parents_items + home_page_why_parents_side_gallery: typeof home_page_why_parents_side_gallery + home_page_gallery_images: typeof home_page_gallery_images + home_page: typeof home_page + _home_page_v_version_why_parents_items: typeof _home_page_v_version_why_parents_items + _home_page_v_version_why_parents_side_gallery: typeof _home_page_v_version_why_parents_side_gallery + _home_page_v_version_gallery_images: typeof _home_page_v_version_gallery_images + _home_page_v: typeof _home_page_v + checkout_page: typeof checkout_page + thank_you_page: typeof thank_you_page + header_nav_links_children: typeof header_nav_links_children + header_nav_links: typeof header_nav_links + header: typeof header + footer_nav_links: typeof footer_nav_links + footer_socials: typeof footer_socials + footer: typeof footer + site_settings_tariff_category_labels: typeof site_settings_tariff_category_labels + site_settings: typeof site_settings + dyvolis_page_hero_tips: typeof dyvolis_page_hero_tips + dyvolis_page_gallery_images: typeof dyvolis_page_gallery_images + dyvolis_page_why_visit_items: typeof dyvolis_page_why_visit_items + dyvolis_page_review_videos: typeof dyvolis_page_review_videos + dyvolis_page: typeof dyvolis_page + group_visits_page_groups: typeof group_visits_page_groups + group_visits_page: typeof group_visits_page + _group_visits_page_v_version_groups: typeof _group_visits_page_v_version_groups + _group_visits_page_v: typeof _group_visits_page_v + birthday_page: typeof birthday_page + _birthday_page_v: typeof _birthday_page_v + tickets_page: typeof tickets_page + _tickets_page_v: typeof _tickets_page_v + locations_page: typeof locations_page + _locations_page_v: typeof _locations_page_v + blog_index_page: typeof blog_index_page + _blog_index_page_v: typeof _blog_index_page_v + relations_users_sessions: typeof relations_users_sessions + relations_users: typeof relations_users + relations_media: typeof relations_media + relations_pages_blocks_hero: typeof relations_pages_blocks_hero + relations_pages_blocks_locations_teaser_locations: typeof relations_pages_blocks_locations_teaser_locations + relations_pages_blocks_locations_teaser: typeof relations_pages_blocks_locations_teaser + relations_pages_blocks_features_items: typeof relations_pages_blocks_features_items + relations_pages_blocks_features: typeof relations_pages_blocks_features + relations_pages_blocks_news_block: typeof relations_pages_blocks_news_block + relations_pages_blocks_newsletter_form: typeof relations_pages_blocks_newsletter_form + relations_pages_blocks_gallery_images: typeof relations_pages_blocks_gallery_images + relations_pages_blocks_gallery: typeof relations_pages_blocks_gallery + relations_pages_blocks_rich_text: typeof relations_pages_blocks_rich_text + relations_pages_blocks_image_block: typeof relations_pages_blocks_image_block + relations_pages_blocks_video_block: typeof relations_pages_blocks_video_block + relations_pages_blocks_lead_form: typeof relations_pages_blocks_lead_form + relations_pages_blocks_pricing_block: typeof relations_pages_blocks_pricing_block + relations_pages_blocks_cta: typeof relations_pages_blocks_cta + relations_pages: typeof relations_pages + relations__pages_v_blocks_hero: typeof relations__pages_v_blocks_hero + relations__pages_v_blocks_locations_teaser_locations: typeof relations__pages_v_blocks_locations_teaser_locations + relations__pages_v_blocks_locations_teaser: typeof relations__pages_v_blocks_locations_teaser + relations__pages_v_blocks_features_items: typeof relations__pages_v_blocks_features_items + relations__pages_v_blocks_features: typeof relations__pages_v_blocks_features + relations__pages_v_blocks_news_block: typeof relations__pages_v_blocks_news_block + relations__pages_v_blocks_newsletter_form: typeof relations__pages_v_blocks_newsletter_form + relations__pages_v_blocks_gallery_images: typeof relations__pages_v_blocks_gallery_images + relations__pages_v_blocks_gallery: typeof relations__pages_v_blocks_gallery + relations__pages_v_blocks_rich_text: typeof relations__pages_v_blocks_rich_text + relations__pages_v_blocks_image_block: typeof relations__pages_v_blocks_image_block + relations__pages_v_blocks_video_block: typeof relations__pages_v_blocks_video_block + relations__pages_v_blocks_lead_form: typeof relations__pages_v_blocks_lead_form + relations__pages_v_blocks_pricing_block: typeof relations__pages_v_blocks_pricing_block + relations__pages_v_blocks_cta: typeof relations__pages_v_blocks_cta + relations__pages_v: typeof relations__pages_v + relations_blog_posts_rels: typeof relations_blog_posts_rels + relations_blog_posts: typeof relations_blog_posts + relations__blog_posts_v_rels: typeof relations__blog_posts_v_rels + relations__blog_posts_v: typeof relations__blog_posts_v + relations_categories: typeof relations_categories + relations_tags: typeof relations_tags + relations_tariffs: typeof relations_tariffs + relations_leads: typeof relations_leads + relations_orders_items: typeof relations_orders_items + relations_orders: typeof relations_orders + relations_locations_gallery: typeof relations_locations_gallery + relations_locations_hero_tips: typeof relations_locations_hero_tips + relations_locations_why_visit_items: typeof relations_locations_why_visit_items + relations_locations_review_videos: typeof relations_locations_review_videos + relations_locations: typeof relations_locations + relations_reviews: typeof relations_reviews + relations_birthday_packages_features: typeof relations_birthday_packages_features + relations_birthday_packages: typeof relations_birthday_packages + relations_redirects_rels: typeof relations_redirects_rels + relations_redirects: typeof relations_redirects + relations_forms_blocks_checkbox: typeof relations_forms_blocks_checkbox + relations_forms_blocks_email: typeof relations_forms_blocks_email + relations_forms_blocks_message: typeof relations_forms_blocks_message + relations_forms_blocks_number: typeof relations_forms_blocks_number + relations_forms_blocks_select_options: typeof relations_forms_blocks_select_options + relations_forms_blocks_select: typeof relations_forms_blocks_select + relations_forms_blocks_text: typeof relations_forms_blocks_text + relations_forms_blocks_textarea: typeof relations_forms_blocks_textarea + relations_forms_blocks_radio_options: typeof relations_forms_blocks_radio_options + relations_forms_blocks_radio: typeof relations_forms_blocks_radio + relations_forms_blocks_date: typeof relations_forms_blocks_date + relations_forms_emails: typeof relations_forms_emails + relations_forms_rels: typeof relations_forms_rels + relations_forms: typeof relations_forms + relations_form_submissions_submission_data: typeof relations_form_submissions_submission_data + relations_form_submissions: typeof relations_form_submissions + relations_payload_kv: typeof relations_payload_kv + relations_payload_locked_documents_rels: typeof relations_payload_locked_documents_rels + relations_payload_locked_documents: typeof relations_payload_locked_documents + relations_payload_preferences_rels: typeof relations_payload_preferences_rels + relations_payload_preferences: typeof relations_payload_preferences + relations_payload_migrations: typeof relations_payload_migrations + relations_home_page_why_parents_items: typeof relations_home_page_why_parents_items + relations_home_page_why_parents_side_gallery: typeof relations_home_page_why_parents_side_gallery + relations_home_page_gallery_images: typeof relations_home_page_gallery_images + relations_home_page: typeof relations_home_page + relations__home_page_v_version_why_parents_items: typeof relations__home_page_v_version_why_parents_items + relations__home_page_v_version_why_parents_side_gallery: typeof relations__home_page_v_version_why_parents_side_gallery + relations__home_page_v_version_gallery_images: typeof relations__home_page_v_version_gallery_images + relations__home_page_v: typeof relations__home_page_v + relations_checkout_page: typeof relations_checkout_page + relations_thank_you_page: typeof relations_thank_you_page + relations_header_nav_links_children: typeof relations_header_nav_links_children + relations_header_nav_links: typeof relations_header_nav_links + relations_header: typeof relations_header + relations_footer_nav_links: typeof relations_footer_nav_links + relations_footer_socials: typeof relations_footer_socials + relations_footer: typeof relations_footer + relations_site_settings_tariff_category_labels: typeof relations_site_settings_tariff_category_labels + relations_site_settings: typeof relations_site_settings + relations_dyvolis_page_hero_tips: typeof relations_dyvolis_page_hero_tips + relations_dyvolis_page_gallery_images: typeof relations_dyvolis_page_gallery_images + relations_dyvolis_page_why_visit_items: typeof relations_dyvolis_page_why_visit_items + relations_dyvolis_page_review_videos: typeof relations_dyvolis_page_review_videos + relations_dyvolis_page: typeof relations_dyvolis_page + relations_group_visits_page_groups: typeof relations_group_visits_page_groups + relations_group_visits_page: typeof relations_group_visits_page + relations__group_visits_page_v_version_groups: typeof relations__group_visits_page_v_version_groups + relations__group_visits_page_v: typeof relations__group_visits_page_v + relations_birthday_page: typeof relations_birthday_page + relations__birthday_page_v: typeof relations__birthday_page_v + relations_tickets_page: typeof relations_tickets_page + relations__tickets_page_v: typeof relations__tickets_page_v + relations_locations_page: typeof relations_locations_page + relations__locations_page_v: typeof relations__locations_page_v + relations_blog_index_page: typeof relations_blog_index_page + relations__blog_index_page_v: typeof relations__blog_index_page_v +} + +declare module '@payloadcms/db-postgres' { + export interface GeneratedDatabaseSchema { + schema: DatabaseSchema + } +} diff --git a/src/payload-types.ts b/src/payload-types.ts index 153ae54..844f37c 100644 --- a/src/payload-types.ts +++ b/src/payload-types.ts @@ -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 | ReviewsSelect 'birthday-packages': BirthdayPackagesSelect | BirthdayPackagesSelect redirects: RedirectsSelect | RedirectsSelect + forms: FormsSelect | FormsSelect + 'form-submissions': FormSubmissionsSelect | FormSubmissionsSelect 'payload-kv': PayloadKvSelect | PayloadKvSelect 'payload-locked-documents': | PayloadLockedDocumentsSelect @@ -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 { updatedAt?: T createdAt?: T } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "forms_select". + */ +export interface FormsSelect { + 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 { + 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 { discount?: T id?: T } + form?: T meta?: | T | { @@ -2045,6 +2431,7 @@ export interface BirthdayPageSelect { heroSubtitle?: T formTitle?: T formSubtitle?: T + form?: T meta?: | T | {