CREATE TABLE IF NOT EXISTS `users` ( `id` char(36) NOT NULL DEFAULT (uuid()), `email` varchar(255) NOT NULL, `display_name` varchar(255) DEFAULT NULL, `role` enum('Admin','TechTeam') NOT NULL, `status` enum('active','disabled') NOT NULL DEFAULT 'active', `password_enc` varchar(255) NOT NULL, `mfa_enabled` tinyint(1) NOT NULL DEFAULT '0', `last_login_at` datetime DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `clients` ( `client_id` varchar(4) NOT NULL, `name` varchar(255) DEFAULT NULL, `status` enum('active','inactive') NOT NULL DEFAULT 'active', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`client_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `credentials` ( `id` char(36) NOT NULL DEFAULT (uuid()), `client_id` varchar(4) NOT NULL, `system_name` varchar(255) NOT NULL, `username` varchar(255) NOT NULL, `password_enc` text NOT NULL, `additional_fields` json DEFAULT NULL, `tags` json DEFAULT NULL, `rotation_due_at` datetime DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `client_id` (`client_id`), CONSTRAINT `credentials_ibfk_1` FOREIGN KEY (`client_id`) REFERENCES `clients` (`client_id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `notes` ( `id` char(36) NOT NULL DEFAULT (uuid()), `client_id` varchar(4) NOT NULL, `user_id` char(36) NOT NULL, `text` text NOT NULL, `pinned` tinyint(1) NOT NULL DEFAULT '0', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `client_id` (`client_id`), KEY `user_id` (`user_id`), CONSTRAINT `notes_ibfk_1` FOREIGN KEY (`client_id`) REFERENCES `clients` (`client_id`) ON DELETE CASCADE, CONSTRAINT `notes_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `audit_events` ( `id` char(36) NOT NULL DEFAULT (uuid()), `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `actor_user_id` char(36) DEFAULT NULL, `action` varchar(255) NOT NULL, `entity_type` varchar(255) DEFAULT NULL, `entity_id` varchar(255) DEFAULT NULL, `client_id` varchar(4) DEFAULT NULL, `metadata` json DEFAULT NULL, PRIMARY KEY (`id`), KEY `actor_user_id` (`actor_user_id`), KEY `client_id_idx` (`client_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;