import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-postgres'

export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
  await db.execute(sql`
   CREATE TYPE "public"."_locales" AS ENUM('ar', 'en');
  CREATE TYPE "public"."enum_courses_units_kind" AS ENUM('lessons', 'labs', 'projects');
  CREATE TYPE "public"."enum_courses_units_source" AS ENUM('book', 'added');
  CREATE TYPE "public"."enum_courses_status" AS ENUM('live', 'partial', 'soon');
  CREATE TYPE "public"."enum_courses_tone" AS ENUM('royal-700', 'royal-800', 'azure-700', 'navy-900', 'navy-700');
  CREATE TYPE "public"."enum_leads_status" AS ENUM('new', 'contacted', 'enrolled', 'closed');
  CREATE TYPE "public"."enum_leads_locale" AS ENUM('ar', 'en');
  CREATE TYPE "public"."enum_home_book_bar_kind" AS ENUM('book', 'added', 'lab', 'project');
  CREATE TABLE "courses_facts" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"text" varchar NOT NULL
  );
  
  CREATE TABLE "courses_includes" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"text" varchar NOT NULL
  );
  
  CREATE TABLE "courses_outcomes" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"text" varchar NOT NULL
  );
  
  CREATE TABLE "courses_units" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"n" numeric NOT NULL,
  	"kind" "enum_courses_units_kind" DEFAULT 'lessons',
  	"source" "enum_courses_units_source" DEFAULT 'book',
  	"lessons" numeric NOT NULL,
  	"book" numeric
  );
  
  CREATE TABLE "courses_units_locales" (
  	"name" varchar NOT NULL,
  	"id" serial PRIMARY KEY NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"_parent_id" varchar NOT NULL
  );
  
  CREATE TABLE "courses" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"slug" varchar NOT NULL,
  	"status" "enum_courses_status" DEFAULT 'soon' NOT NULL,
  	"order" numeric DEFAULT 10 NOT NULL,
  	"price_amount" numeric,
  	"platform_url" varchar,
  	"poster_id" integer,
  	"video_url" varchar,
  	"tone" "enum_courses_tone" DEFAULT 'royal-700',
  	"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
  	"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
  );
  
  CREATE TABLE "courses_locales" (
  	"title" varchar NOT NULL,
  	"title_short" varchar,
  	"tagline" varchar NOT NULL,
  	"audience" varchar,
  	"level" varchar,
  	"instruction" varchar,
  	"availability" varchar,
  	"price_note" varchar,
  	"poster_note" varchar,
  	"id" serial PRIMARY KEY NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"_parent_id" integer NOT NULL
  );
  
  CREATE TABLE "leads" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"name" varchar NOT NULL,
  	"email" varchar NOT NULL,
  	"phone" varchar,
  	"role" varchar,
  	"course_id" integer,
  	"note" varchar,
  	"status" "enum_leads_status" DEFAULT 'new',
  	"locale" "enum_leads_locale",
  	"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
  	"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
  );
  
  CREATE TABLE "media" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
  	"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
  	"url" varchar,
  	"thumbnail_u_r_l" varchar,
  	"filename" varchar,
  	"mime_type" varchar,
  	"filesize" numeric,
  	"width" numeric,
  	"height" numeric,
  	"focal_x" numeric,
  	"focal_y" numeric,
  	"sizes_card_url" varchar,
  	"sizes_card_width" numeric,
  	"sizes_card_height" numeric,
  	"sizes_card_mime_type" varchar,
  	"sizes_card_filesize" numeric,
  	"sizes_card_filename" varchar,
  	"sizes_wide_url" varchar,
  	"sizes_wide_width" numeric,
  	"sizes_wide_height" numeric,
  	"sizes_wide_mime_type" varchar,
  	"sizes_wide_filesize" numeric,
  	"sizes_wide_filename" varchar
  );
  
  CREATE TABLE "media_locales" (
  	"alt" varchar NOT NULL,
  	"id" serial PRIMARY KEY NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"_parent_id" integer NOT NULL
  );
  
  CREATE TABLE "users_sessions" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"created_at" timestamp(3) with time zone,
  	"expires_at" timestamp(3) with time zone NOT NULL
  );
  
  CREATE TABLE "users" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"name" varchar,
  	"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
  	"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
  	"email" varchar NOT NULL,
  	"reset_password_token" varchar,
  	"reset_password_expiration" timestamp(3) with time zone,
  	"salt" varchar,
  	"hash" varchar,
  	"reset_password_requested_at" timestamp(3) with time zone,
  	"login_attempts" numeric DEFAULT 0,
  	"lock_until" timestamp(3) with time zone
  );
  
  CREATE TABLE "payload_kv" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"key" varchar NOT NULL,
  	"data" jsonb NOT NULL
  );
  
  CREATE TABLE "payload_locked_documents" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"global_slug" 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 "payload_locked_documents_rels" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"order" integer,
  	"parent_id" integer NOT NULL,
  	"path" varchar NOT NULL,
  	"courses_id" integer,
  	"leads_id" integer,
  	"media_id" integer,
  	"users_id" integer
  );
  
  CREATE TABLE "payload_preferences" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"key" varchar,
  	"value" jsonb,
  	"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
  	"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
  );
  
  CREATE TABLE "payload_preferences_rels" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"order" integer,
  	"parent_id" integer NOT NULL,
  	"path" varchar NOT NULL,
  	"users_id" integer
  );
  
  CREATE TABLE "payload_migrations" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"name" varchar,
  	"batch" numeric,
  	"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
  	"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
  );
  
  CREATE TABLE "home_facts" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"n" varchar NOT NULL,
  	"label" varchar
  );
  
  CREATE TABLE "home_book_bar" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"n" varchar NOT NULL,
  	"label" varchar,
  	"kind" "enum_home_book_bar_kind" NOT NULL
  );
  
  CREATE TABLE "home_layers" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"badge" varchar NOT NULL,
  	"name" varchar NOT NULL,
  	"text" varchar,
  	"plain" boolean
  );
  
  CREATE TABLE "home_steps" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"n" varchar NOT NULL,
  	"title" varchar NOT NULL,
  	"text" varchar
  );
  
  CREATE TABLE "home_life_boxes" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"title" varchar NOT NULL,
  	"text" varchar
  );
  
  CREATE TABLE "home_people" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"name" varchar NOT NULL,
  	"text" varchar
  );
  
  CREATE TABLE "home_faq" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"q" varchar NOT NULL,
  	"text" varchar
  );
  
  CREATE TABLE "home" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"hero_image_id" integer,
  	"life_image_id" integer,
  	"units_course_id" integer,
  	"updated_at" timestamp(3) with time zone,
  	"created_at" timestamp(3) with time zone
  );
  
  CREATE TABLE "home_locales" (
  	"seo_title" varchar NOT NULL,
  	"seo_description" varchar,
  	"eyebrow" varchar,
  	"h1" varchar NOT NULL,
  	"h1_accent" varchar,
  	"lead" varchar,
  	"book_title" varchar,
  	"book_lead" varchar,
  	"book_bar_title" varchar,
  	"book_code" varchar,
  	"layers_title" varchar,
  	"paths" varchar,
  	"steps_title" varchar,
  	"life_title" varchar,
  	"life_text" varchar,
  	"units_title" varchar,
  	"units_lead" varchar,
  	"people_title" varchar,
  	"courses_title" varchar,
  	"courses_lead" varchar,
  	"cta_title" varchar,
  	"cta_lead" varchar,
  	"faq_title" varchar,
  	"id" serial PRIMARY KEY NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"_parent_id" integer NOT NULL
  );
  
  CREATE TABLE "catalogue" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"updated_at" timestamp(3) with time zone,
  	"created_at" timestamp(3) with time zone
  );
  
  CREATE TABLE "catalogue_locales" (
  	"seo_title" varchar NOT NULL,
  	"seo_description" varchar,
  	"h1" varchar NOT NULL,
  	"lead" varchar,
  	"labels_back" varchar,
  	"labels_outcomes" varchar,
  	"labels_audience" varchar,
  	"labels_instruction" varchar,
  	"labels_level" varchar,
  	"labels_units" varchar,
  	"labels_units_lead" varchar,
  	"labels_preview" varchar,
  	"labels_preview_note" varchar,
  	"labels_lessons_word" varchar,
  	"labels_labs_word" varchar,
  	"labels_projects_word" varchar,
  	"labels_from_book" varchar,
  	"labels_added" varchar,
  	"labels_added_unit" varchar,
  	"id" serial PRIMARY KEY NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"_parent_id" integer NOT NULL
  );
  
  CREATE TABLE "pricing_plans_items" (
  	"_order" integer NOT NULL,
  	"_parent_id" varchar NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"text" varchar NOT NULL
  );
  
  CREATE TABLE "pricing_plans" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"name" varchar NOT NULL,
  	"text" varchar,
  	"price" varchar
  );
  
  CREATE TABLE "pricing_roles" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"label" varchar NOT NULL
  );
  
  CREATE TABLE "pricing" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"updated_at" timestamp(3) with time zone,
  	"created_at" timestamp(3) with time zone
  );
  
  CREATE TABLE "pricing_locales" (
  	"seo_title" varchar NOT NULL,
  	"seo_description" varchar,
  	"h1" varchar NOT NULL,
  	"lead" varchar,
  	"plans_title" varchar,
  	"form_title" varchar,
  	"form_lead" varchar,
  	"fields_name" varchar,
  	"fields_email" varchar,
  	"fields_phone" varchar,
  	"fields_role" varchar,
  	"fields_course" varchar,
  	"fields_note" varchar,
  	"submit" varchar,
  	"privacy" varchar,
  	"sent" varchar,
  	"invalid" varchar,
  	"id" serial PRIMARY KEY NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"_parent_id" integer NOT NULL
  );
  
  CREATE TABLE "about_principles" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"text" varchar NOT NULL
  );
  
  CREATE TABLE "about_sections" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"title" varchar NOT NULL,
  	"text" varchar
  );
  
  CREATE TABLE "about" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"updated_at" timestamp(3) with time zone,
  	"created_at" timestamp(3) with time zone
  );
  
  CREATE TABLE "about_locales" (
  	"seo_title" varchar NOT NULL,
  	"seo_description" varchar,
  	"h1" varchar NOT NULL,
  	"lead" varchar,
  	"people_title" varchar,
  	"principles_title" varchar,
  	"id" serial PRIMARY KEY NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"_parent_id" integer NOT NULL
  );
  
  CREATE TABLE "settings_nav" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"label" varchar NOT NULL,
  	"href" varchar NOT NULL
  );
  
  CREATE TABLE "settings_footer_links" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"label" varchar NOT NULL,
  	"href" varchar NOT NULL
  );
  
  CREATE TABLE "settings" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"contact_email" varchar,
  	"contact_phone" varchar,
  	"contact_whatsapp" varchar,
  	"contact_youtube" varchar,
  	"platform_url" varchar,
  	"free_lesson_href" varchar NOT NULL,
  	"currency_code" varchar,
  	"updated_at" timestamp(3) with time zone,
  	"created_at" timestamp(3) with time zone
  );
  
  CREATE TABLE "settings_locales" (
  	"brand_name" varchar NOT NULL,
  	"currency_label" varchar,
  	"cta_free" varchar,
  	"cta_all" varchar,
  	"cta_primary" varchar,
  	"cta_enrol" varchar,
  	"cta_notify" varchar,
  	"cta_youtube" varchar,
  	"ui_lang_switch" varchar,
  	"ui_menu" varchar,
  	"ui_skip" varchar,
  	"ui_sign_in" varchar,
  	"status_live" varchar,
  	"status_partial" varchar,
  	"status_soon" varchar,
  	"footer_tagline" varchar,
  	"footer_courses_heading" varchar,
  	"footer_academy_heading" varchar,
  	"footer_rights" varchar,
  	"id" serial PRIMARY KEY NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"_parent_id" integer NOT NULL
  );
  
  ALTER TABLE "courses_facts" ADD CONSTRAINT "courses_facts_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."courses"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "courses_includes" ADD CONSTRAINT "courses_includes_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."courses"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "courses_outcomes" ADD CONSTRAINT "courses_outcomes_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."courses"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "courses_units" ADD CONSTRAINT "courses_units_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."courses"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "courses_units_locales" ADD CONSTRAINT "courses_units_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."courses_units"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "courses" ADD CONSTRAINT "courses_poster_id_media_id_fk" FOREIGN KEY ("poster_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
  ALTER TABLE "courses_locales" ADD CONSTRAINT "courses_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."courses"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "leads" ADD CONSTRAINT "leads_course_id_courses_id_fk" FOREIGN KEY ("course_id") REFERENCES "public"."courses"("id") ON DELETE set null ON UPDATE no action;
  ALTER TABLE "media_locales" ADD CONSTRAINT "media_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."media"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "users_sessions" ADD CONSTRAINT "users_sessions_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."payload_locked_documents"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_courses_fk" FOREIGN KEY ("courses_id") REFERENCES "public"."courses"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_leads_fk" FOREIGN KEY ("leads_id") REFERENCES "public"."leads"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_media_fk" FOREIGN KEY ("media_id") REFERENCES "public"."media"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "payload_locked_documents_rels" ADD CONSTRAINT "payload_locked_documents_rels_users_fk" FOREIGN KEY ("users_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "payload_preferences_rels" ADD CONSTRAINT "payload_preferences_rels_parent_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."payload_preferences"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "payload_preferences_rels" ADD CONSTRAINT "payload_preferences_rels_users_fk" FOREIGN KEY ("users_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "home_facts" ADD CONSTRAINT "home_facts_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "home_book_bar" ADD CONSTRAINT "home_book_bar_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "home_layers" ADD CONSTRAINT "home_layers_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "home_steps" ADD CONSTRAINT "home_steps_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "home_life_boxes" ADD CONSTRAINT "home_life_boxes_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "home_people" ADD CONSTRAINT "home_people_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "home_faq" ADD CONSTRAINT "home_faq_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "home" ADD CONSTRAINT "home_hero_image_id_media_id_fk" FOREIGN KEY ("hero_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
  ALTER TABLE "home" ADD CONSTRAINT "home_life_image_id_media_id_fk" FOREIGN KEY ("life_image_id") REFERENCES "public"."media"("id") ON DELETE set null ON UPDATE no action;
  ALTER TABLE "home" ADD CONSTRAINT "home_units_course_id_courses_id_fk" FOREIGN KEY ("units_course_id") REFERENCES "public"."courses"("id") ON DELETE set null ON UPDATE no action;
  ALTER TABLE "home_locales" ADD CONSTRAINT "home_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "catalogue_locales" ADD CONSTRAINT "catalogue_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."catalogue"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "pricing_plans_items" ADD CONSTRAINT "pricing_plans_items_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pricing_plans"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "pricing_plans" ADD CONSTRAINT "pricing_plans_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pricing"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "pricing_roles" ADD CONSTRAINT "pricing_roles_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pricing"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "pricing_locales" ADD CONSTRAINT "pricing_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."pricing"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "about_principles" ADD CONSTRAINT "about_principles_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."about"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "about_sections" ADD CONSTRAINT "about_sections_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."about"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "about_locales" ADD CONSTRAINT "about_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."about"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "settings_nav" ADD CONSTRAINT "settings_nav_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."settings"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "settings_footer_links" ADD CONSTRAINT "settings_footer_links_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."settings"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "settings_locales" ADD CONSTRAINT "settings_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."settings"("id") ON DELETE cascade ON UPDATE no action;
  CREATE INDEX "courses_facts_order_idx" ON "courses_facts" USING btree ("_order");
  CREATE INDEX "courses_facts_parent_id_idx" ON "courses_facts" USING btree ("_parent_id");
  CREATE INDEX "courses_facts_locale_idx" ON "courses_facts" USING btree ("_locale");
  CREATE INDEX "courses_includes_order_idx" ON "courses_includes" USING btree ("_order");
  CREATE INDEX "courses_includes_parent_id_idx" ON "courses_includes" USING btree ("_parent_id");
  CREATE INDEX "courses_includes_locale_idx" ON "courses_includes" USING btree ("_locale");
  CREATE INDEX "courses_outcomes_order_idx" ON "courses_outcomes" USING btree ("_order");
  CREATE INDEX "courses_outcomes_parent_id_idx" ON "courses_outcomes" USING btree ("_parent_id");
  CREATE INDEX "courses_outcomes_locale_idx" ON "courses_outcomes" USING btree ("_locale");
  CREATE INDEX "courses_units_order_idx" ON "courses_units" USING btree ("_order");
  CREATE INDEX "courses_units_parent_id_idx" ON "courses_units" USING btree ("_parent_id");
  CREATE UNIQUE INDEX "courses_units_locales_locale_parent_id_unique" ON "courses_units_locales" USING btree ("_locale","_parent_id");
  CREATE UNIQUE INDEX "courses_slug_idx" ON "courses" USING btree ("slug");
  CREATE INDEX "courses_poster_idx" ON "courses" USING btree ("poster_id");
  CREATE INDEX "courses_updated_at_idx" ON "courses" USING btree ("updated_at");
  CREATE INDEX "courses_created_at_idx" ON "courses" USING btree ("created_at");
  CREATE UNIQUE INDEX "courses_locales_locale_parent_id_unique" ON "courses_locales" USING btree ("_locale","_parent_id");
  CREATE INDEX "leads_course_idx" ON "leads" USING btree ("course_id");
  CREATE INDEX "leads_updated_at_idx" ON "leads" USING btree ("updated_at");
  CREATE INDEX "leads_created_at_idx" ON "leads" USING btree ("created_at");
  CREATE INDEX "media_updated_at_idx" ON "media" USING btree ("updated_at");
  CREATE INDEX "media_created_at_idx" ON "media" USING btree ("created_at");
  CREATE UNIQUE INDEX "media_filename_idx" ON "media" USING btree ("filename");
  CREATE INDEX "media_sizes_card_sizes_card_filename_idx" ON "media" USING btree ("sizes_card_filename");
  CREATE INDEX "media_sizes_wide_sizes_wide_filename_idx" ON "media" USING btree ("sizes_wide_filename");
  CREATE UNIQUE INDEX "media_locales_locale_parent_id_unique" ON "media_locales" USING btree ("_locale","_parent_id");
  CREATE INDEX "users_sessions_order_idx" ON "users_sessions" USING btree ("_order");
  CREATE INDEX "users_sessions_parent_id_idx" ON "users_sessions" USING btree ("_parent_id");
  CREATE INDEX "users_updated_at_idx" ON "users" USING btree ("updated_at");
  CREATE INDEX "users_created_at_idx" ON "users" USING btree ("created_at");
  CREATE UNIQUE INDEX "users_email_idx" ON "users" USING btree ("email");
  CREATE UNIQUE INDEX "payload_kv_key_idx" ON "payload_kv" USING btree ("key");
  CREATE INDEX "payload_locked_documents_global_slug_idx" ON "payload_locked_documents" USING btree ("global_slug");
  CREATE INDEX "payload_locked_documents_updated_at_idx" ON "payload_locked_documents" USING btree ("updated_at");
  CREATE INDEX "payload_locked_documents_created_at_idx" ON "payload_locked_documents" USING btree ("created_at");
  CREATE INDEX "payload_locked_documents_rels_order_idx" ON "payload_locked_documents_rels" USING btree ("order");
  CREATE INDEX "payload_locked_documents_rels_parent_idx" ON "payload_locked_documents_rels" USING btree ("parent_id");
  CREATE INDEX "payload_locked_documents_rels_path_idx" ON "payload_locked_documents_rels" USING btree ("path");
  CREATE INDEX "payload_locked_documents_rels_courses_id_idx" ON "payload_locked_documents_rels" USING btree ("courses_id");
  CREATE INDEX "payload_locked_documents_rels_leads_id_idx" ON "payload_locked_documents_rels" USING btree ("leads_id");
  CREATE INDEX "payload_locked_documents_rels_media_id_idx" ON "payload_locked_documents_rels" USING btree ("media_id");
  CREATE INDEX "payload_locked_documents_rels_users_id_idx" ON "payload_locked_documents_rels" USING btree ("users_id");
  CREATE INDEX "payload_preferences_key_idx" ON "payload_preferences" USING btree ("key");
  CREATE INDEX "payload_preferences_updated_at_idx" ON "payload_preferences" USING btree ("updated_at");
  CREATE INDEX "payload_preferences_created_at_idx" ON "payload_preferences" USING btree ("created_at");
  CREATE INDEX "payload_preferences_rels_order_idx" ON "payload_preferences_rels" USING btree ("order");
  CREATE INDEX "payload_preferences_rels_parent_idx" ON "payload_preferences_rels" USING btree ("parent_id");
  CREATE INDEX "payload_preferences_rels_path_idx" ON "payload_preferences_rels" USING btree ("path");
  CREATE INDEX "payload_preferences_rels_users_id_idx" ON "payload_preferences_rels" USING btree ("users_id");
  CREATE INDEX "payload_migrations_updated_at_idx" ON "payload_migrations" USING btree ("updated_at");
  CREATE INDEX "payload_migrations_created_at_idx" ON "payload_migrations" USING btree ("created_at");
  CREATE INDEX "home_facts_order_idx" ON "home_facts" USING btree ("_order");
  CREATE INDEX "home_facts_parent_id_idx" ON "home_facts" USING btree ("_parent_id");
  CREATE INDEX "home_facts_locale_idx" ON "home_facts" USING btree ("_locale");
  CREATE INDEX "home_book_bar_order_idx" ON "home_book_bar" USING btree ("_order");
  CREATE INDEX "home_book_bar_parent_id_idx" ON "home_book_bar" USING btree ("_parent_id");
  CREATE INDEX "home_book_bar_locale_idx" ON "home_book_bar" USING btree ("_locale");
  CREATE INDEX "home_layers_order_idx" ON "home_layers" USING btree ("_order");
  CREATE INDEX "home_layers_parent_id_idx" ON "home_layers" USING btree ("_parent_id");
  CREATE INDEX "home_layers_locale_idx" ON "home_layers" USING btree ("_locale");
  CREATE INDEX "home_steps_order_idx" ON "home_steps" USING btree ("_order");
  CREATE INDEX "home_steps_parent_id_idx" ON "home_steps" USING btree ("_parent_id");
  CREATE INDEX "home_steps_locale_idx" ON "home_steps" USING btree ("_locale");
  CREATE INDEX "home_life_boxes_order_idx" ON "home_life_boxes" USING btree ("_order");
  CREATE INDEX "home_life_boxes_parent_id_idx" ON "home_life_boxes" USING btree ("_parent_id");
  CREATE INDEX "home_life_boxes_locale_idx" ON "home_life_boxes" USING btree ("_locale");
  CREATE INDEX "home_people_order_idx" ON "home_people" USING btree ("_order");
  CREATE INDEX "home_people_parent_id_idx" ON "home_people" USING btree ("_parent_id");
  CREATE INDEX "home_people_locale_idx" ON "home_people" USING btree ("_locale");
  CREATE INDEX "home_faq_order_idx" ON "home_faq" USING btree ("_order");
  CREATE INDEX "home_faq_parent_id_idx" ON "home_faq" USING btree ("_parent_id");
  CREATE INDEX "home_faq_locale_idx" ON "home_faq" USING btree ("_locale");
  CREATE INDEX "home_hero_image_idx" ON "home" USING btree ("hero_image_id");
  CREATE INDEX "home_life_image_idx" ON "home" USING btree ("life_image_id");
  CREATE INDEX "home_units_course_idx" ON "home" USING btree ("units_course_id");
  CREATE UNIQUE INDEX "home_locales_locale_parent_id_unique" ON "home_locales" USING btree ("_locale","_parent_id");
  CREATE UNIQUE INDEX "catalogue_locales_locale_parent_id_unique" ON "catalogue_locales" USING btree ("_locale","_parent_id");
  CREATE INDEX "pricing_plans_items_order_idx" ON "pricing_plans_items" USING btree ("_order");
  CREATE INDEX "pricing_plans_items_parent_id_idx" ON "pricing_plans_items" USING btree ("_parent_id");
  CREATE INDEX "pricing_plans_items_locale_idx" ON "pricing_plans_items" USING btree ("_locale");
  CREATE INDEX "pricing_plans_order_idx" ON "pricing_plans" USING btree ("_order");
  CREATE INDEX "pricing_plans_parent_id_idx" ON "pricing_plans" USING btree ("_parent_id");
  CREATE INDEX "pricing_plans_locale_idx" ON "pricing_plans" USING btree ("_locale");
  CREATE INDEX "pricing_roles_order_idx" ON "pricing_roles" USING btree ("_order");
  CREATE INDEX "pricing_roles_parent_id_idx" ON "pricing_roles" USING btree ("_parent_id");
  CREATE INDEX "pricing_roles_locale_idx" ON "pricing_roles" USING btree ("_locale");
  CREATE UNIQUE INDEX "pricing_locales_locale_parent_id_unique" ON "pricing_locales" USING btree ("_locale","_parent_id");
  CREATE INDEX "about_principles_order_idx" ON "about_principles" USING btree ("_order");
  CREATE INDEX "about_principles_parent_id_idx" ON "about_principles" USING btree ("_parent_id");
  CREATE INDEX "about_principles_locale_idx" ON "about_principles" USING btree ("_locale");
  CREATE INDEX "about_sections_order_idx" ON "about_sections" USING btree ("_order");
  CREATE INDEX "about_sections_parent_id_idx" ON "about_sections" USING btree ("_parent_id");
  CREATE INDEX "about_sections_locale_idx" ON "about_sections" USING btree ("_locale");
  CREATE UNIQUE INDEX "about_locales_locale_parent_id_unique" ON "about_locales" USING btree ("_locale","_parent_id");
  CREATE INDEX "settings_nav_order_idx" ON "settings_nav" USING btree ("_order");
  CREATE INDEX "settings_nav_parent_id_idx" ON "settings_nav" USING btree ("_parent_id");
  CREATE INDEX "settings_nav_locale_idx" ON "settings_nav" USING btree ("_locale");
  CREATE INDEX "settings_footer_links_order_idx" ON "settings_footer_links" USING btree ("_order");
  CREATE INDEX "settings_footer_links_parent_id_idx" ON "settings_footer_links" USING btree ("_parent_id");
  CREATE INDEX "settings_footer_links_locale_idx" ON "settings_footer_links" USING btree ("_locale");
  CREATE UNIQUE INDEX "settings_locales_locale_parent_id_unique" ON "settings_locales" USING btree ("_locale","_parent_id");`)
}

export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
  await db.execute(sql`
   DROP TABLE "courses_facts" CASCADE;
  DROP TABLE "courses_includes" CASCADE;
  DROP TABLE "courses_outcomes" CASCADE;
  DROP TABLE "courses_units" CASCADE;
  DROP TABLE "courses_units_locales" CASCADE;
  DROP TABLE "courses" CASCADE;
  DROP TABLE "courses_locales" CASCADE;
  DROP TABLE "leads" CASCADE;
  DROP TABLE "media" CASCADE;
  DROP TABLE "media_locales" CASCADE;
  DROP TABLE "users_sessions" CASCADE;
  DROP TABLE "users" CASCADE;
  DROP TABLE "payload_kv" CASCADE;
  DROP TABLE "payload_locked_documents" CASCADE;
  DROP TABLE "payload_locked_documents_rels" CASCADE;
  DROP TABLE "payload_preferences" CASCADE;
  DROP TABLE "payload_preferences_rels" CASCADE;
  DROP TABLE "payload_migrations" CASCADE;
  DROP TABLE "home_facts" CASCADE;
  DROP TABLE "home_book_bar" CASCADE;
  DROP TABLE "home_layers" CASCADE;
  DROP TABLE "home_steps" CASCADE;
  DROP TABLE "home_life_boxes" CASCADE;
  DROP TABLE "home_people" CASCADE;
  DROP TABLE "home_faq" CASCADE;
  DROP TABLE "home" CASCADE;
  DROP TABLE "home_locales" CASCADE;
  DROP TABLE "catalogue" CASCADE;
  DROP TABLE "catalogue_locales" CASCADE;
  DROP TABLE "pricing_plans_items" CASCADE;
  DROP TABLE "pricing_plans" CASCADE;
  DROP TABLE "pricing_roles" CASCADE;
  DROP TABLE "pricing" CASCADE;
  DROP TABLE "pricing_locales" CASCADE;
  DROP TABLE "about_principles" CASCADE;
  DROP TABLE "about_sections" CASCADE;
  DROP TABLE "about" CASCADE;
  DROP TABLE "about_locales" CASCADE;
  DROP TABLE "settings_nav" CASCADE;
  DROP TABLE "settings_footer_links" CASCADE;
  DROP TABLE "settings" CASCADE;
  DROP TABLE "settings_locales" CASCADE;
  DROP TYPE "public"."_locales";
  DROP TYPE "public"."enum_courses_units_kind";
  DROP TYPE "public"."enum_courses_units_source";
  DROP TYPE "public"."enum_courses_status";
  DROP TYPE "public"."enum_courses_tone";
  DROP TYPE "public"."enum_leads_status";
  DROP TYPE "public"."enum_leads_locale";
  DROP TYPE "public"."enum_home_book_bar_kind";`)
}
