CREATE TABLE IF NOT EXISTS `organizations` (
  `id` VARCHAR(191) NOT NULL,
  `name` VARCHAR(191) NOT NULL,
  `slug` VARCHAR(191) NOT NULL,
  `email` VARCHAR(191) NULL,
  `phone` VARCHAR(191) NULL,
  `logoUrl` VARCHAR(191) NULL,
  `isActive` BOOLEAN NOT NULL DEFAULT true,
  `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  `updatedAt` DATETIME(3) NOT NULL,
  UNIQUE INDEX `organizations_slug_key`(`slug`),
  PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `user_modules` (
  `id` VARCHAR(191) NOT NULL,
  `userId` VARCHAR(191) NOT NULL,
  `moduleName` VARCHAR(191) NOT NULL,
  `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  UNIQUE INDEX `user_modules_userId_moduleName_key`(`userId`, `moduleName`),
  INDEX `user_modules_userId_idx`(`userId`),
  INDEX `user_modules_moduleName_idx`(`moduleName`),
  PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE `utilizadores` ADD COLUMN `organizationId` VARCHAR(191) NULL;
ALTER TABLE `equipamentos` ADD COLUMN `organizationId` VARCHAR(191) NULL;
ALTER TABLE `documentos` ADD COLUMN `organizationId` VARCHAR(191) NULL;
ALTER TABLE `eventos` ADD COLUMN `organizationId` VARCHAR(191) NULL;
ALTER TABLE `auditoria` ADD COLUMN `organizationId` VARCHAR(191) NULL;

CREATE INDEX `utilizadores_organizationId_idx` ON `utilizadores`(`organizationId`);
CREATE INDEX `equipamentos_organizationId_idx` ON `equipamentos`(`organizationId`);
CREATE INDEX `documentos_organizationId_idx` ON `documentos`(`organizationId`);
CREATE INDEX `eventos_organizationId_idx` ON `eventos`(`organizationId`);
CREATE INDEX `auditoria_organizationId_idx` ON `auditoria`(`organizationId`);
