70 lines
3.0 KiB
SQL
70 lines
3.0 KiB
SQL
|
|
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;
|