- GallerySlider: rewrite to 3D coverflow (rotateY perspective, 3.5s auto-rotate, dots + arrows, lightbox on center click) — matches DyvoLisGallery style - migration 0006: add meta_title/description/image_id columns for seoPlugin Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
116 lines
6.8 KiB
SQL
116 lines
6.8 KiB
SQL
-- Migration: 0006 — DinosaurPage global + dynozavry location
|
||
-- Idempotent: uses IF NOT EXISTS / ON CONFLICT DO NOTHING
|
||
|
||
-- ─── Main global table ────────────────────────────────────────────────────────
|
||
CREATE TABLE IF NOT EXISTS "dinosaur_page" (
|
||
"id" integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
||
"hero_title" varchar,
|
||
"hero_description" varchar,
|
||
"hero_stat" varchar,
|
||
"hero_stat_label" varchar,
|
||
"hero_image_id" integer REFERENCES "media"("id") ON DELETE SET NULL,
|
||
"activities_title" varchar,
|
||
"activities_description" varchar,
|
||
"why_visit_title" varchar,
|
||
"working_hours" varchar,
|
||
"combo_description" varchar,
|
||
"updated_at" timestamp(3) with time zone DEFAULT now() NOT NULL,
|
||
"created_at" timestamp(3) with time zone DEFAULT now() NOT NULL
|
||
);
|
||
|
||
-- ─── hero_features array ──────────────────────────────────────────────────────
|
||
CREATE TABLE IF NOT EXISTS "dinosaur_page_hero_features" (
|
||
"_order" integer NOT NULL,
|
||
"_parent_id" integer NOT NULL REFERENCES "dinosaur_page"("id") ON DELETE CASCADE,
|
||
"id" varchar PRIMARY KEY NOT NULL,
|
||
"text" varchar
|
||
);
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_hero_features_order_idx" ON "dinosaur_page_hero_features" ("_order");
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_hero_features_parent_idx" ON "dinosaur_page_hero_features" ("_parent_id");
|
||
|
||
-- ─── dinosaurs array (wheel) ──────────────────────────────────────────────────
|
||
CREATE TABLE IF NOT EXISTS "dinosaur_page_dinosaurs" (
|
||
"_order" integer NOT NULL,
|
||
"_parent_id" integer NOT NULL REFERENCES "dinosaur_page"("id") ON DELETE CASCADE,
|
||
"id" varchar PRIMARY KEY NOT NULL,
|
||
"name" varchar,
|
||
"epoch" varchar,
|
||
"length" varchar,
|
||
"weight" varchar,
|
||
"image_id" integer REFERENCES "media"("id") ON DELETE SET NULL,
|
||
"thumbnail_image_id" integer REFERENCES "media"("id") ON DELETE SET NULL
|
||
);
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_dinosaurs_order_idx" ON "dinosaur_page_dinosaurs" ("_order");
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_dinosaurs_parent_idx" ON "dinosaur_page_dinosaurs" ("_parent_id");
|
||
|
||
-- ─── gallery_images array ─────────────────────────────────────────────────────
|
||
CREATE TABLE IF NOT EXISTS "dinosaur_page_gallery_images" (
|
||
"_order" integer NOT NULL,
|
||
"_parent_id" integer NOT NULL REFERENCES "dinosaur_page"("id") ON DELETE CASCADE,
|
||
"id" varchar PRIMARY KEY NOT NULL,
|
||
"image_id" integer REFERENCES "media"("id") ON DELETE SET NULL
|
||
);
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_gallery_images_order_idx" ON "dinosaur_page_gallery_images" ("_order");
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_gallery_images_parent_idx" ON "dinosaur_page_gallery_images" ("_parent_id");
|
||
|
||
-- ─── activities array ─────────────────────────────────────────────────────────
|
||
CREATE TABLE IF NOT EXISTS "dinosaur_page_activities" (
|
||
"_order" integer NOT NULL,
|
||
"_parent_id" integer NOT NULL REFERENCES "dinosaur_page"("id") ON DELETE CASCADE,
|
||
"id" varchar PRIMARY KEY NOT NULL,
|
||
"name" varchar,
|
||
"price" varchar,
|
||
"description" varchar,
|
||
"image_id" integer REFERENCES "media"("id") ON DELETE SET NULL,
|
||
"href" varchar
|
||
);
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_activities_order_idx" ON "dinosaur_page_activities" ("_order");
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_activities_parent_idx" ON "dinosaur_page_activities" ("_parent_id");
|
||
|
||
-- ─── why_visit_items array ────────────────────────────────────────────────────
|
||
CREATE TABLE IF NOT EXISTS "dinosaur_page_why_visit_items" (
|
||
"_order" integer NOT NULL,
|
||
"_parent_id" integer NOT NULL REFERENCES "dinosaur_page"("id") ON DELETE CASCADE,
|
||
"id" varchar PRIMARY KEY NOT NULL,
|
||
"title" varchar,
|
||
"description" varchar
|
||
);
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_why_visit_items_order_idx" ON "dinosaur_page_why_visit_items" ("_order");
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_why_visit_items_parent_idx" ON "dinosaur_page_why_visit_items" ("_parent_id");
|
||
|
||
-- ─── review_videos array ─────────────────────────────────────────────────────
|
||
CREATE TABLE IF NOT EXISTS "dinosaur_page_review_videos" (
|
||
"_order" integer NOT NULL,
|
||
"_parent_id" integer NOT NULL REFERENCES "dinosaur_page"("id") ON DELETE CASCADE,
|
||
"id" varchar PRIMARY KEY NOT NULL,
|
||
"src" varchar,
|
||
"poster" varchar,
|
||
"label" varchar
|
||
);
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_review_videos_order_idx" ON "dinosaur_page_review_videos" ("_order");
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_review_videos_parent_idx" ON "dinosaur_page_review_videos" ("_parent_id");
|
||
|
||
-- ─── Seed initial dinosaur_page row (so findGlobal works before seed) ─────────
|
||
INSERT INTO "dinosaur_page" (id, hero_title, working_hours)
|
||
VALUES (1, 'Динопарк — портал у світ динозаврів', 'п''ятниця-субота-неділя з 11:00 до 20:00')
|
||
ON CONFLICT (id) DO NOTHING;
|
||
|
||
-- ─── Location record for dynozavry ───────────────────────────────────────────
|
||
INSERT INTO "locations" (
|
||
name, slug, tagline, short_desc,
|
||
show_in_menu, show_on_home, show_detail_page, sort
|
||
)
|
||
VALUES (
|
||
'Динопарк',
|
||
'dynozavry',
|
||
'Портал у світ динозаврів',
|
||
'Великі динозаври, що рухаються та гарчать. 26 унікальних експонатів.',
|
||
true, true, false, 20
|
||
)
|
||
ON CONFLICT (slug) DO NOTHING;
|
||
|
||
-- SEO plugin meta columns (added by seoPlugin for globals)
|
||
ALTER TABLE "dinosaur_page" ADD COLUMN IF NOT EXISTS "meta_title" varchar;
|
||
ALTER TABLE "dinosaur_page" ADD COLUMN IF NOT EXISTS "meta_description" varchar;
|
||
ALTER TABLE "dinosaur_page" ADD COLUMN IF NOT EXISTS "meta_image_id" integer REFERENCES "media"("id") ON DELETE SET NULL;
|
||
CREATE INDEX IF NOT EXISTS "dinosaur_page_meta_meta_image_idx" ON "dinosaur_page" ("meta_image_id");
|