-- Organization settings tabs: site-level translations, countries, DPA, scheduled tasks, related sites.
-- Additive only; safe to re-run. Run against the application database (MariaDB), then `pnpm prisma generate`.

CREATE TABLE IF NOT EXISTS `SiteTranslation` (
  `id` VARCHAR(191) NOT NULL,
  `organizationId` VARCHAR(191) NOT NULL,
  `siteId` VARCHAR(191) NOT NULL,
  `locale` VARCHAR(10) NOT NULL,
  `key` VARCHAR(80) NOT NULL,
  `value` TEXT NOT NULL,
  `updatedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
  PRIMARY KEY (`id`),
  UNIQUE KEY `SiteTranslation_siteId_locale_key_key` (`siteId`, `locale`, `key`),
  KEY `SiteTranslation_organizationId_idx` (`organizationId`),
  CONSTRAINT `SiteTranslation_organizationId_fkey` FOREIGN KEY (`organizationId`) REFERENCES `Organization` (`id`) ON DELETE CASCADE,
  CONSTRAINT `SiteTranslation_siteId_fkey` FOREIGN KEY (`siteId`) REFERENCES `Site` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `OrganizationCountry` (
  `id` VARCHAR(191) NOT NULL,
  `organizationId` VARCHAR(191) NOT NULL,
  `code` VARCHAR(2) NOT NULL,
  `enabled` TINYINT(1) NOT NULL DEFAULT 1,
  `name` VARCHAR(120) NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `OrganizationCountry_organizationId_code_key` (`organizationId`, `code`),
  CONSTRAINT `OrganizationCountry_organizationId_fkey` FOREIGN KEY (`organizationId`) REFERENCES `Organization` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `DpaGroup` (
  `id` VARCHAR(191) NOT NULL,
  `organizationId` VARCHAR(191) NOT NULL,
  `name` VARCHAR(120) NOT NULL,
  `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  PRIMARY KEY (`id`),
  KEY `DpaGroup_organizationId_idx` (`organizationId`),
  CONSTRAINT `DpaGroup_organizationId_fkey` FOREIGN KEY (`organizationId`) REFERENCES `Organization` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `DpaQuestion` (
  `id` VARCHAR(191) NOT NULL,
  `organizationId` VARCHAR(191) NOT NULL,
  `groupId` VARCHAR(191) NULL,
  `name` VARCHAR(200) NOT NULL,
  `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  PRIMARY KEY (`id`),
  KEY `DpaQuestion_organizationId_idx` (`organizationId`),
  KEY `DpaQuestion_groupId_idx` (`groupId`),
  CONSTRAINT `DpaQuestion_organizationId_fkey` FOREIGN KEY (`organizationId`) REFERENCES `Organization` (`id`) ON DELETE CASCADE,
  CONSTRAINT `DpaQuestion_groupId_fkey` FOREIGN KEY (`groupId`) REFERENCES `DpaGroup` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `DpaOption` (
  `id` VARCHAR(191) NOT NULL,
  `organizationId` VARCHAR(191) NOT NULL,
  `kind` ENUM('SECTOR','CONTACT_TYPE','SCOPE') NOT NULL,
  `name` VARCHAR(120) NOT NULL,
  `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  PRIMARY KEY (`id`),
  KEY `DpaOption_organizationId_kind_idx` (`organizationId`, `kind`),
  CONSTRAINT `DpaOption_organizationId_fkey` FOREIGN KEY (`organizationId`) REFERENCES `Organization` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `ScheduledTask` (
  `id` VARCHAR(191) NOT NULL,
  `organizationId` VARCHAR(191) NOT NULL,
  `siteId` VARCHAR(191) NOT NULL,
  `type` ENUM('EXHIBITOR_EXPORT_XML','VISITOR_IMPORT_XML','VISITOR_IMPORT_CSV','VISITOR_IMPORT_API') NOT NULL,
  `lastRanAt` DATETIME(3) NULL,
  `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  PRIMARY KEY (`id`),
  KEY `ScheduledTask_organizationId_idx` (`organizationId`),
  KEY `ScheduledTask_siteId_idx` (`siteId`),
  CONSTRAINT `ScheduledTask_organizationId_fkey` FOREIGN KEY (`organizationId`) REFERENCES `Organization` (`id`) ON DELETE CASCADE,
  CONSTRAINT `ScheduledTask_siteId_fkey` FOREIGN KEY (`siteId`) REFERENCES `Site` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `SiteRelationship` (
  `id` VARCHAR(191) NOT NULL,
  `organizationId` VARCHAR(191) NOT NULL,
  `definition` VARCHAR(100) NOT NULL,
  `active` TINYINT(1) NOT NULL DEFAULT 1,
  `shareLibraries` TINYINT(1) NOT NULL DEFAULT 0,
  `shareEntries` TINYINT(1) NOT NULL DEFAULT 0,
  `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  PRIMARY KEY (`id`),
  KEY `SiteRelationship_organizationId_idx` (`organizationId`),
  CONSTRAINT `SiteRelationship_organizationId_fkey` FOREIGN KEY (`organizationId`) REFERENCES `Organization` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `SiteRelationshipSite` (
  `relationshipId` VARCHAR(191) NOT NULL,
  `siteId` VARCHAR(191) NOT NULL,
  PRIMARY KEY (`relationshipId`, `siteId`),
  KEY `SiteRelationshipSite_siteId_idx` (`siteId`),
  CONSTRAINT `SiteRelationshipSite_relationshipId_fkey` FOREIGN KEY (`relationshipId`) REFERENCES `SiteRelationship` (`id`) ON DELETE CASCADE,
  CONSTRAINT `SiteRelationshipSite_siteId_fkey` FOREIGN KEY (`siteId`) REFERENCES `Site` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
