SAAS/模型定义-系统级.txt

127 lines
6.7 KiB
Plaintext
Raw Normal View History

2025-05-14 00:30:11 +08:00
/**
* 表创建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\`)`
];