SAAS/模型定义-系统级.txt
2025-05-14 00:30:11 +08:00

127 lines
6.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 表创建SQL定义
* 系统所需的所有表结构
*/
private static readonly TABLE_DEFINITIONS: Record<string, string> = {
// 工作空间表
workspaces: `
CREATE TABLE IF NOT EXISTS \`workspaces\` (
\`id\` int NOT NULL AUTO_INCREMENT COMMENT '空间ID主键',
\`name\` varchar(50) NOT NULL COMMENT '空间名称',
\`creator_id\` int NOT NULL COMMENT '创建者用户ID',
\`status\` tinyint NOT NULL DEFAULT '1' COMMENT '状态1=活跃0=停用)',
\`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
\`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (\`id\`),
KEY \`idx_creator_id\` (\`creator_id\`) COMMENT '创建者ID索引提高查询效率'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工作空间信息表'
`,
// 系统用户表
system_users: `
CREATE TABLE IF NOT EXISTS \`system_users\` (
\`id\` int NOT NULL AUTO_INCREMENT COMMENT '用户ID主键',
\`username\` varchar(50) NOT NULL COMMENT '登录用户名(唯一)',
\`password\` varchar(100) NOT NULL COMMENT '加密密码',
\`email\` varchar(100) NOT NULL COMMENT '电子邮箱(唯一)',
\`phone\` varchar(20) NOT NULL COMMENT '手机号码(唯一)',
\`workspace_id\` int NOT NULL COMMENT '所属工作空间ID',
\`role_type\` varchar(30) NOT NULL DEFAULT 'user' COMMENT '角色类型',
\`role_name\` varchar(50) NOT NULL DEFAULT '普通用户' COMMENT '角色显示名称',
\`is_custom_role\` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否自定义角色1=是0=否)',
\`status\` tinyint NOT NULL DEFAULT '1' COMMENT '状态1=启用0=禁用)',
\`invited_by\` int DEFAULT NULL COMMENT '邀请人IDNULL表示自主注册',
\`invitation_token\` varchar(100) DEFAULT NULL COMMENT '邀请验证令牌',
\`last_login_at\` datetime DEFAULT NULL COMMENT '最后登录时间',
\`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
\`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (\`id\`),
UNIQUE KEY \`uk_username\` (\`username\`),
UNIQUE KEY \`uk_email\` (\`email\`),
UNIQUE KEY \`uk_phone\` (\`phone\`),
KEY \`idx_workspace_id\` (\`workspace_id\`),
KEY \`idx_invited_by\` (\`invited_by\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表'
`,
// 用户角色表
user_roles: `
CREATE TABLE IF NOT EXISTS \`user_roles\` (
\`id\` int NOT NULL AUTO_INCREMENT COMMENT '角色ID主键',
\`type\` varchar(30) NOT NULL COMMENT '角色类型',
\`name\` varchar(50) NOT NULL COMMENT '角色显示名称',
\`is_custom\` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否自定义1=是0=否)',
\`workspace_id\` int NOT NULL COMMENT '所属工作空间ID',
\`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
\`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (\`id\`),
UNIQUE KEY \`uk_type_workspace\` (\`type\`, \`workspace_id\`),
KEY \`idx_workspace_id\` (\`workspace_id\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色表'
`,
// 团队表
teams: `
CREATE TABLE IF NOT EXISTS \`teams\` (
\`id\` int NOT NULL AUTO_INCREMENT COMMENT '团队ID主键',
\`team_code\` varchar(30) NOT NULL COMMENT '团队唯一编码',
\`name\` varchar(50) NOT NULL COMMENT '团队名称',
\`db_host\` varchar(100) NOT NULL COMMENT '数据库主机地址',
\`db_name\` varchar(50) NOT NULL COMMENT '数据库名称',
\`db_username\` varchar(50) NOT NULL COMMENT '数据库用户名',
\`db_password\` varchar(100) NOT NULL COMMENT '数据库密码',
\`workspace_id\` int NOT NULL COMMENT '所属工作空间ID',
\`owner_id\` int NOT NULL COMMENT '团队管理员ID',
\`status\` tinyint NOT NULL DEFAULT '1' COMMENT '状态1=正常0=停用)',
\`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
\`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (\`id\`),
UNIQUE KEY \`uk_team_code\` (\`team_code\`),
KEY \`idx_workspace_id\` (\`workspace_id\`),
KEY \`idx_owner_id\` (\`owner_id\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='团队信息表'
`,
// 用户-团队关系表
user_team_relations: `
CREATE TABLE IF NOT EXISTS \`user_team_relations\` (
\`id\` int NOT NULL AUTO_INCREMENT COMMENT '关系ID主键',
\`user_id\` int NOT NULL COMMENT '用户ID',
\`team_id\` int NOT NULL COMMENT '团队ID',
\`role\` varchar(20) NOT NULL DEFAULT 'member' COMMENT '角色owner=拥有者admin=管理员member=成员)',
\`created_at\` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
\`updated_at\` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (\`id\`),
UNIQUE KEY \`uk_user_team\` (\`user_id\`,\`team_id\`) COMMENT '确保用户在一个团队中只有一个角色',
KEY \`idx_team_id\` (\`team_id\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户团队关系表'
`
};
/**
* 外键定义
* 定义表之间的关系
*/
private static readonly FOREIGN_KEY_DEFINITIONS: string[] = [
// 系统用户表的外键
`ALTER TABLE \`system_users\`
ADD CONSTRAINT \`fk_user_workspace\` FOREIGN KEY (\`workspace_id\`) REFERENCES \`workspaces\` (\`id\`),
ADD CONSTRAINT \`fk_user_inviter\` FOREIGN KEY (\`invited_by\`) REFERENCES \`system_users\` (\`id\`)`,
// 用户角色表的外键
`ALTER TABLE \`user_roles\`
ADD CONSTRAINT \`fk_role_workspace\` FOREIGN KEY (\`workspace_id\`) REFERENCES \`workspaces\` (\`id\`)`,
// 团队表的外键
`ALTER TABLE \`teams\`
ADD CONSTRAINT \`fk_team_workspace\` FOREIGN KEY (\`workspace_id\`) REFERENCES \`workspaces\` (\`id\`),
ADD CONSTRAINT \`fk_team_owner\` FOREIGN KEY (\`owner_id\`) REFERENCES \`system_users\` (\`id\`)`,
// 用户-团队关系表的外键
`ALTER TABLE \`user_team_relations\`
ADD CONSTRAINT \`fk_relation_user\` FOREIGN KEY (\`user_id\`) REFERENCES \`system_users\` (\`id\`),
ADD CONSTRAINT \`fk_relation_team\` FOREIGN KEY (\`team_id\`) REFERENCES \`teams\` (\`id\`)`
];