-- Additive only: new columns have defaults, new table is empty. Nothing is dropped or rewritten.
-- Take a backup first, then run once against the application database (MariaDB).
-- Safe to re-run: every statement checks for existence.

ALTER TABLE `Page`
  ADD COLUMN IF NOT EXISTS `showTitle` TINYINT(1) NOT NULL DEFAULT 0,
  ADD COLUMN IF NOT EXISTS `layout` VARCHAR(191) NOT NULL DEFAULT 'default',
  ADD COLUMN IF NOT EXISTS `sortOrder` INT NOT NULL DEFAULT 0,
  ADD COLUMN IF NOT EXISTS `showInSearch` TINYINT(1) NOT NULL DEFAULT 1,
  ADD COLUMN IF NOT EXISTS `tags` LONGTEXT NULL;

CREATE TABLE IF NOT EXISTS `Panel` (
  `id` VARCHAR(191) NOT NULL,
  `siteId` VARCHAR(191) NOT NULL,
  `name` VARCHAR(191) NOT NULL,
  `position` VARCHAR(32) NOT NULL,
  `active` TINYINT(1) NOT NULL DEFAULT 1,
  `sortOrder` INT NOT NULL DEFAULT 0,
  `pageIds` LONGTEXT NULL,
  `content` LONGTEXT NOT NULL,
  `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  `updatedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
  PRIMARY KEY (`id`),
  KEY `Panel_siteId_position_sortOrder_idx` (`siteId`, `position`, `sortOrder`),
  CONSTRAINT `Panel_siteId_fkey` FOREIGN KEY (`siteId`) REFERENCES `Site` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
