cursor-init/drizzle/0000_nostalgic_eternity.sql

293 lines
12 KiB
SQL

-- Current sql file was generated after introspecting the database
-- If you want to run this migration please uncomment this code before executing migrations
/*
CREATE TABLE `sys_dict_items` (
`id` bigint NOT NULL,
`type_id` bigint NOT NULL,
`item_key` varchar(50) NOT NULL,
`item_value` varchar(200) NOT NULL,
`label` varchar(100) NOT NULL,
`label_en` varchar(200),
`description` text,
`pid` bigint DEFAULT 0,
`path` varchar(500),
`level` int NOT NULL DEFAULT 1,
`sort_order` int NOT NULL DEFAULT 0,
`status` varchar(20) NOT NULL DEFAULT 'active',
`css_class` varchar(50),
`color` varchar(50),
`extra` json,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`updated_by` bigint,
`updated_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`deleted_at` datetime,
CONSTRAINT `sys_dict_items_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_type_key` UNIQUE(`type_id`,`item_key`,`deleted_at`)
);
--> statement-breakpoint
CREATE TABLE `sys_dict_types` (
`id` bigint NOT NULL,
`code` varchar(50) NOT NULL,
`name` varchar(100) NOT NULL,
`description` text,
`pid` bigint DEFAULT 0,
`path` varchar(500),
`level` int NOT NULL DEFAULT 1,
`status` varchar(20) NOT NULL DEFAULT 'active',
`is_system` tinyint(1) NOT NULL DEFAULT 0,
`sort_order` int NOT NULL DEFAULT 0,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`updated_by` bigint,
`updated_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`deleted_at` datetime,
CONSTRAINT `sys_dict_types_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_code` UNIQUE(`code`,`deleted_at`)
);
--> statement-breakpoint
CREATE TABLE `sys_operation_logs` (
`id` bigint NOT NULL,
`user_id` bigint,
`username` varchar(100),
`module` varchar(50) NOT NULL,
`action` varchar(50) NOT NULL,
`target` varchar(200),
`target_id` bigint,
`request_data` text,
`response_data` text,
`status` varchar(20) NOT NULL,
`ip` varchar(45),
`user_agent` varchar(200),
`duration` bigint,
`error_msg` text,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
CONSTRAINT `sys_operation_logs_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `sys_organizations` (
`id` bigint NOT NULL,
`code` varchar(100) NOT NULL,
`name` varchar(200) NOT NULL,
`full_name` varchar(200),
`description` text,
`pid` bigint DEFAULT 0,
`path` varchar(500),
`level` int NOT NULL DEFAULT 1,
`type` varchar(20),
`status` varchar(20) NOT NULL DEFAULT 'active',
`sort_order` int NOT NULL DEFAULT 0,
`leader_id` bigint,
`address` varchar(200),
`phone` varchar(50),
`extra` json,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`updated_by` bigint,
`updated_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`deleted_at` datetime,
`version` int NOT NULL DEFAULT 1,
CONSTRAINT `sys_organizations_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_code` UNIQUE(`code`,`deleted_at`)
);
--> statement-breakpoint
CREATE TABLE `sys_permissions` (
`id` bigint NOT NULL,
`code` varchar(100) NOT NULL,
`name` varchar(100) NOT NULL,
`type` varchar(20) NOT NULL,
`resource` varchar(50),
`action` varchar(50),
`description` text,
`pid` bigint DEFAULT 0,
`path` varchar(500),
`level` int NOT NULL DEFAULT 1,
`sort_order` int NOT NULL DEFAULT 0,
`status` varchar(20) NOT NULL DEFAULT 'active',
`meta` json,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`updated_by` bigint,
`updated_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`deleted_at` datetime,
CONSTRAINT `sys_permissions_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_code` UNIQUE(`code`,`deleted_at`)
);
--> statement-breakpoint
CREATE TABLE `sys_role_permissions` (
`id` bigint NOT NULL,
`role_id` bigint NOT NULL,
`permission_id` bigint NOT NULL,
`is_half` tinyint(1) NOT NULL DEFAULT 0,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
CONSTRAINT `sys_role_permissions_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_role_permission` UNIQUE(`role_id`,`permission_id`)
);
--> statement-breakpoint
CREATE TABLE `sys_roles` (
`id` bigint NOT NULL,
`code` varchar(50) NOT NULL,
`name` varchar(100) NOT NULL,
`description` text,
`pid` bigint DEFAULT 0,
`path` varchar(500),
`level` int NOT NULL DEFAULT 1,
`sort_order` int NOT NULL DEFAULT 0,
`status` varchar(20) NOT NULL DEFAULT 'active',
`is_system` tinyint(1) NOT NULL DEFAULT 0,
`permissions_snapshot` json,
`extra` json,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`updated_by` bigint,
`updated_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`deleted_at` datetime,
`version` int NOT NULL DEFAULT 1,
CONSTRAINT `sys_roles_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_code` UNIQUE(`code`,`deleted_at`)
);
--> statement-breakpoint
CREATE TABLE `sys_tags` (
`id` bigint NOT NULL,
`name` varchar(50) NOT NULL,
`type` varchar(50) DEFAULT 'user',
`color` varchar(50),
`description` text,
`usage_count` int NOT NULL DEFAULT 0,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`deleted_at` datetime,
CONSTRAINT `sys_tags_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_name_type` UNIQUE(`name`,`type`,`deleted_at`)
);
--> statement-breakpoint
CREATE TABLE `sys_user_organizations` (
`id` bigint NOT NULL,
`user_id` bigint NOT NULL,
`organization_id` bigint NOT NULL,
`is_primary` tinyint(1) NOT NULL DEFAULT 0,
`position` varchar(100),
`joined_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
CONSTRAINT `sys_user_organizations_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_user_org` UNIQUE(`user_id`,`organization_id`)
);
--> statement-breakpoint
CREATE TABLE `sys_user_roles` (
`id` bigint NOT NULL,
`user_id` bigint NOT NULL,
`role_id` bigint NOT NULL,
`expired_at` datetime,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
CONSTRAINT `sys_user_roles_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_user_role` UNIQUE(`user_id`,`role_id`)
);
--> statement-breakpoint
CREATE TABLE `sys_user_tags` (
`id` bigint NOT NULL,
`user_id` bigint NOT NULL,
`tag_id` bigint NOT NULL,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
CONSTRAINT `sys_user_tags_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_user_tag` UNIQUE(`user_id`,`tag_id`)
);
--> statement-breakpoint
CREATE TABLE `sys_users` (
`id` bigint NOT NULL,
`username` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`mobile` varchar(20),
`password_hash` varchar(255) NOT NULL,
`avatar` varchar(255),
`nickname` varchar(100),
`status` varchar(20) NOT NULL DEFAULT 'active',
`gender` tinyint DEFAULT 0,
`birthday` date,
`bio` varchar(500),
`login_count` int NOT NULL DEFAULT 0,
`last_login_at` datetime,
`last_login_ip` varchar(45),
`failed_attempts` int NOT NULL DEFAULT 0,
`locked_until` datetime,
`is_root` tinyint(1) NOT NULL DEFAULT 0,
`extra` json,
`created_by` bigint,
`created_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`updated_by` bigint,
`updated_at` datetime NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`deleted_at` datetime,
`version` int NOT NULL DEFAULT 1,
CONSTRAINT `sys_users_id` PRIMARY KEY(`id`),
CONSTRAINT `uk_email` UNIQUE(`email`,`deleted_at`),
CONSTRAINT `uk_username` UNIQUE(`username`,`deleted_at`)
);
--> statement-breakpoint
CREATE INDEX `idx_deleted_at` ON `sys_dict_items` (`deleted_at`);--> statement-breakpoint
CREATE INDEX `idx_key` ON `sys_dict_items` (`item_key`);--> statement-breakpoint
CREATE INDEX `idx_pid` ON `sys_dict_items` (`pid`);--> statement-breakpoint
CREATE INDEX `idx_sort` ON `sys_dict_items` (`type_id`,`sort_order`);--> statement-breakpoint
CREATE INDEX `idx_status` ON `sys_dict_items` (`status`);--> statement-breakpoint
CREATE INDEX `idx_type_id` ON `sys_dict_items` (`type_id`);--> statement-breakpoint
CREATE INDEX `idx_deleted_at` ON `sys_dict_types` (`deleted_at`);--> statement-breakpoint
CREATE INDEX `idx_is_system` ON `sys_dict_types` (`is_system`);--> statement-breakpoint
CREATE INDEX `idx_name` ON `sys_dict_types` (`name`);--> statement-breakpoint
CREATE INDEX `idx_path` ON `sys_dict_types` (`path`);--> statement-breakpoint
CREATE INDEX `idx_pid` ON `sys_dict_types` (`pid`);--> statement-breakpoint
CREATE INDEX `idx_sort` ON `sys_dict_types` (`pid`,`sort_order`);--> statement-breakpoint
CREATE INDEX `idx_status` ON `sys_dict_types` (`status`);--> statement-breakpoint
CREATE INDEX `idx_created_at` ON `sys_operation_logs` (`created_at`);--> statement-breakpoint
CREATE INDEX `idx_ip` ON `sys_operation_logs` (`ip`);--> statement-breakpoint
CREATE INDEX `idx_module_action` ON `sys_operation_logs` (`module`,`action`);--> statement-breakpoint
CREATE INDEX `idx_status` ON `sys_operation_logs` (`status`);--> statement-breakpoint
CREATE INDEX `idx_target` ON `sys_operation_logs` (`target_id`);--> statement-breakpoint
CREATE INDEX `idx_user_id` ON `sys_operation_logs` (`user_id`);--> statement-breakpoint
CREATE INDEX `idx_deleted_at` ON `sys_organizations` (`deleted_at`);--> statement-breakpoint
CREATE INDEX `idx_leader_id` ON `sys_organizations` (`leader_id`);--> statement-breakpoint
CREATE INDEX `idx_name` ON `sys_organizations` (`name`);--> statement-breakpoint
CREATE INDEX `idx_path` ON `sys_organizations` (`path`);--> statement-breakpoint
CREATE INDEX `idx_pid` ON `sys_organizations` (`pid`);--> statement-breakpoint
CREATE INDEX `idx_sort` ON `sys_organizations` (`pid`,`sort_order`);--> statement-breakpoint
CREATE INDEX `idx_status` ON `sys_organizations` (`status`);--> statement-breakpoint
CREATE INDEX `idx_type` ON `sys_organizations` (`type`);--> statement-breakpoint
CREATE INDEX `idx_deleted_at` ON `sys_permissions` (`deleted_at`);--> statement-breakpoint
CREATE INDEX `idx_pid` ON `sys_permissions` (`pid`);--> statement-breakpoint
CREATE INDEX `idx_resource_action` ON `sys_permissions` (`resource`,`action`);--> statement-breakpoint
CREATE INDEX `idx_sort` ON `sys_permissions` (`pid`,`sort_order`);--> statement-breakpoint
CREATE INDEX `idx_status` ON `sys_permissions` (`status`);--> statement-breakpoint
CREATE INDEX `idx_type` ON `sys_permissions` (`type`);--> statement-breakpoint
CREATE INDEX `idx_is_half` ON `sys_role_permissions` (`is_half`);--> statement-breakpoint
CREATE INDEX `idx_permission_id` ON `sys_role_permissions` (`permission_id`);--> statement-breakpoint
CREATE INDEX `idx_role_id` ON `sys_role_permissions` (`role_id`);--> statement-breakpoint
CREATE INDEX `idx_deleted_at` ON `sys_roles` (`deleted_at`);--> statement-breakpoint
CREATE INDEX `idx_is_system` ON `sys_roles` (`is_system`);--> statement-breakpoint
CREATE INDEX `idx_name` ON `sys_roles` (`name`);--> statement-breakpoint
CREATE INDEX `idx_path` ON `sys_roles` (`path`);--> statement-breakpoint
CREATE INDEX `idx_pid` ON `sys_roles` (`pid`);--> statement-breakpoint
CREATE INDEX `idx_sort` ON `sys_roles` (`pid`,`sort_order`);--> statement-breakpoint
CREATE INDEX `idx_status` ON `sys_roles` (`status`);--> statement-breakpoint
CREATE INDEX `idx_deleted_at` ON `sys_tags` (`deleted_at`);--> statement-breakpoint
CREATE INDEX `idx_name` ON `sys_tags` (`name`);--> statement-breakpoint
CREATE INDEX `idx_type` ON `sys_tags` (`type`);--> statement-breakpoint
CREATE INDEX `idx_usage_count` ON `sys_tags` (`usage_count`);--> statement-breakpoint
CREATE INDEX `idx_is_primary` ON `sys_user_organizations` (`is_primary`);--> statement-breakpoint
CREATE INDEX `idx_joined_at` ON `sys_user_organizations` (`joined_at`);--> statement-breakpoint
CREATE INDEX `idx_organization_id` ON `sys_user_organizations` (`organization_id`);--> statement-breakpoint
CREATE INDEX `idx_user_id` ON `sys_user_organizations` (`user_id`);--> statement-breakpoint
CREATE INDEX `idx_created_at` ON `sys_user_roles` (`created_at`);--> statement-breakpoint
CREATE INDEX `idx_expired_at` ON `sys_user_roles` (`expired_at`);--> statement-breakpoint
CREATE INDEX `idx_role_id` ON `sys_user_roles` (`role_id`);--> statement-breakpoint
CREATE INDEX `idx_user_id` ON `sys_user_roles` (`user_id`);--> statement-breakpoint
CREATE INDEX `idx_created_at` ON `sys_user_tags` (`created_at`);--> statement-breakpoint
CREATE INDEX `idx_tag_id` ON `sys_user_tags` (`tag_id`);--> statement-breakpoint
CREATE INDEX `idx_user_id` ON `sys_user_tags` (`user_id`);--> statement-breakpoint
CREATE INDEX `idx_created_at` ON `sys_users` (`created_at`);--> statement-breakpoint
CREATE INDEX `idx_deleted_at` ON `sys_users` (`deleted_at`);--> statement-breakpoint
CREATE INDEX `idx_is_root` ON `sys_users` (`is_root`);--> statement-breakpoint
CREATE INDEX `idx_last_login` ON `sys_users` (`last_login_at`);--> statement-breakpoint
CREATE INDEX `idx_mobile` ON `sys_users` (`mobile`);--> statement-breakpoint
CREATE INDEX `idx_status` ON `sys_users` (`status`);
*/