Shumiland/migrations/0006_dinosaur_page.sql
Vadym Samoilenko 4cc6586366
Some checks are pending
CI / Type Check (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Unit Tests (push) Waiting to run
Deploy / Build & Push Image (push) Waiting to run
Deploy / Deploy to VPS (push) Blocked by required conditions
fix(gallery): replace CSS scroll with 3D coverflow slider everywhere; fix migration SEO columns
- 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>
2026-05-28 14:17:12 +01:00

116 lines
6.8 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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");