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"."enum_home_why_icon" AS ENUM('book', 'target', 'clock', 'check', 'layers', 'ai');
  CREATE TABLE "home_why" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"icon" "enum_home_why_icon" DEFAULT 'book',
  	"title" varchar NOT NULL,
  	"text" varchar
  );
  
  CREATE TABLE "categories" (
  	"id" serial PRIMARY KEY NOT NULL,
  	"updated_at" timestamp(3) with time zone,
  	"created_at" timestamp(3) with time zone
  );
  
  CREATE TABLE "categories_locales" (
  	"seo_title" varchar NOT NULL,
  	"seo_description" varchar,
  	"h1" varchar NOT NULL,
  	"lead" varchar,
  	"featured_title" varchar,
  	"featured_lead" varchar,
  	"id" serial PRIMARY KEY NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"_parent_id" integer NOT NULL
  );
  
  CREATE TABLE "settings_chat_items" (
  	"_order" integer NOT NULL,
  	"_parent_id" integer NOT NULL,
  	"_locale" "_locales" NOT NULL,
  	"id" varchar PRIMARY KEY NOT NULL,
  	"q" varchar NOT NULL,
  	"a" varchar NOT NULL
  );
  
  ALTER TABLE "home_locales" ADD COLUMN "note_one" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "note_two" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "browse_cta" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "categories_cta" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "cat_eyebrow" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "cat_title" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "cat_text" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "cat_link" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "featured_eyebrow" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "featured_link" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "why_eyebrow" varchar;
  ALTER TABLE "home_locales" ADD COLUMN "why_title" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_search" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_category" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_level" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_status" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_all" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_all_levels" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_results" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_sort" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_sort_default" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_sort_price" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_empty" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_page" varchar;
  ALTER TABLE "catalogue_locales" ADD COLUMN "filters_courses_count" varchar;
  ALTER TABLE "settings_locales" ADD COLUMN "banner" varchar;
  ALTER TABLE "settings_locales" ADD COLUMN "ui_light" varchar;
  ALTER TABLE "settings_locales" ADD COLUMN "ui_dark" varchar;
  ALTER TABLE "settings_locales" ADD COLUMN "ui_close" varchar;
  ALTER TABLE "settings_locales" ADD COLUMN "chat_title" varchar;
  ALTER TABLE "settings_locales" ADD COLUMN "chat_greeting" varchar;
  ALTER TABLE "settings_locales" ADD COLUMN "chat_placeholder" varchar;
  ALTER TABLE "settings_locales" ADD COLUMN "chat_send" varchar;
  ALTER TABLE "settings_locales" ADD COLUMN "chat_disclaimer" varchar;
  ALTER TABLE "home_why" ADD CONSTRAINT "home_why_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."home"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "categories_locales" ADD CONSTRAINT "categories_locales_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."categories"("id") ON DELETE cascade ON UPDATE no action;
  ALTER TABLE "settings_chat_items" ADD CONSTRAINT "settings_chat_items_parent_id_fk" FOREIGN KEY ("_parent_id") REFERENCES "public"."settings"("id") ON DELETE cascade ON UPDATE no action;
  CREATE INDEX "home_why_order_idx" ON "home_why" USING btree ("_order");
  CREATE INDEX "home_why_parent_id_idx" ON "home_why" USING btree ("_parent_id");
  CREATE INDEX "home_why_locale_idx" ON "home_why" USING btree ("_locale");
  CREATE UNIQUE INDEX "categories_locales_locale_parent_id_unique" ON "categories_locales" USING btree ("_locale","_parent_id");
  CREATE INDEX "settings_chat_items_order_idx" ON "settings_chat_items" USING btree ("_order");
  CREATE INDEX "settings_chat_items_parent_id_idx" ON "settings_chat_items" USING btree ("_parent_id");
  CREATE INDEX "settings_chat_items_locale_idx" ON "settings_chat_items" USING btree ("_locale");`)
}

export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
  await db.execute(sql`
   DROP TABLE "home_why" CASCADE;
  DROP TABLE "categories" CASCADE;
  DROP TABLE "categories_locales" CASCADE;
  DROP TABLE "settings_chat_items" CASCADE;
  ALTER TABLE "home_locales" DROP COLUMN "note_one";
  ALTER TABLE "home_locales" DROP COLUMN "note_two";
  ALTER TABLE "home_locales" DROP COLUMN "browse_cta";
  ALTER TABLE "home_locales" DROP COLUMN "categories_cta";
  ALTER TABLE "home_locales" DROP COLUMN "cat_eyebrow";
  ALTER TABLE "home_locales" DROP COLUMN "cat_title";
  ALTER TABLE "home_locales" DROP COLUMN "cat_text";
  ALTER TABLE "home_locales" DROP COLUMN "cat_link";
  ALTER TABLE "home_locales" DROP COLUMN "featured_eyebrow";
  ALTER TABLE "home_locales" DROP COLUMN "featured_link";
  ALTER TABLE "home_locales" DROP COLUMN "why_eyebrow";
  ALTER TABLE "home_locales" DROP COLUMN "why_title";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_search";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_category";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_level";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_status";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_all";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_all_levels";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_results";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_sort";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_sort_default";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_sort_price";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_empty";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_page";
  ALTER TABLE "catalogue_locales" DROP COLUMN "filters_courses_count";
  ALTER TABLE "settings_locales" DROP COLUMN "banner";
  ALTER TABLE "settings_locales" DROP COLUMN "ui_light";
  ALTER TABLE "settings_locales" DROP COLUMN "ui_dark";
  ALTER TABLE "settings_locales" DROP COLUMN "ui_close";
  ALTER TABLE "settings_locales" DROP COLUMN "chat_title";
  ALTER TABLE "settings_locales" DROP COLUMN "chat_greeting";
  ALTER TABLE "settings_locales" DROP COLUMN "chat_placeholder";
  ALTER TABLE "settings_locales" DROP COLUMN "chat_send";
  ALTER TABLE "settings_locales" DROP COLUMN "chat_disclaimer";
  DROP TYPE "public"."enum_home_why_icon";`)
}
