chore: initial commit
This commit is contained in:
221
internal/db/migrations/000001_init.up.sql
Normal file
221
internal/db/migrations/000001_init.up.sql
Normal file
@@ -0,0 +1,221 @@
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
-- function
|
||||
CREATE
|
||||
OR REPLACE FUNCTION update_updated_at_column()
|
||||
RETURNS TRIGGER AS
|
||||
$$
|
||||
BEGIN
|
||||
NEW.updated_at
|
||||
:= NOW();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$
|
||||
language 'plpgsql';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE sys_users
|
||||
(
|
||||
id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
account TEXT NOT NULL UNIQUE,
|
||||
username TEXT NOT NULL,
|
||||
password_hash TEXT NOT NULL,
|
||||
avatar_id INTEGER,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE INDEX idx_sys_users_account ON sys_users (account);
|
||||
|
||||
CREATE TRIGGER update_sys_users_updated_at
|
||||
BEFORE UPDATE
|
||||
ON sys_users
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_updated_at_column();
|
||||
|
||||
|
||||
COMMENT ON COLUMN sys_users.id IS '主键ID';
|
||||
COMMENT ON COLUMN sys_users.account IS '用户账号';
|
||||
COMMENT ON COLUMN sys_users.username IS '用户名称';
|
||||
COMMENT ON COLUMN sys_users.password_hash IS 'hash密码';
|
||||
COMMENT ON COLUMN sys_users.avatar_id IS '头像文件id';
|
||||
COMMENT ON COLUMN sys_users.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN sys_users.updated_at IS '更新时间';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE sys_roles
|
||||
(
|
||||
id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
name TEXT NOT NULL,
|
||||
code TEXT NOT NULL UNIQUE,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE TRIGGER update_sys_roles_updated_at
|
||||
BEFORE UPDATE
|
||||
ON sys_roles
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_updated_at_column();
|
||||
|
||||
COMMENT ON COLUMN sys_roles.id IS '主键ID';
|
||||
COMMENT ON COLUMN sys_roles.name IS '角色名称';
|
||||
COMMENT ON COLUMN sys_roles.code IS '角色编码,唯一';
|
||||
COMMENT ON COLUMN sys_roles.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN sys_roles.updated_at IS '更新时间';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE sys_permissions
|
||||
(
|
||||
id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
code TEXT UNIQUE,
|
||||
type SMALLINT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ,
|
||||
|
||||
CONSTRAINT unique_type_code UNIQUE (type, code)
|
||||
);
|
||||
|
||||
CREATE TRIGGER update_sys_permissions_updated_at
|
||||
BEFORE UPDATE
|
||||
ON sys_permissions
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_updated_at_column();
|
||||
|
||||
COMMENT ON COLUMN sys_permissions.id IS '主键ID';
|
||||
COMMENT ON COLUMN sys_permissions.code IS '权限字符,唯一';
|
||||
COMMENT ON COLUMN sys_permissions.code IS '权限类型,0: 菜单 1: api';
|
||||
COMMENT ON COLUMN sys_permissions.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN sys_permissions.updated_at IS '更新时间';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE sys_menus
|
||||
(
|
||||
id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
name TEXT NOT NULL,
|
||||
path TEXT NOT NULL,
|
||||
component TEXT,
|
||||
type SMALLINT NOT NULL,
|
||||
hidden BOOLEAN DEFAULT FALSE,
|
||||
sort INTEGER DEFAULT 0,
|
||||
status SMALLINT NOT NULL DEFAULT 1,
|
||||
parent_id INTEGER,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ,
|
||||
|
||||
CHECK (type IN (0, 1, 2)),
|
||||
CHECK (status IN (0, 1))
|
||||
);
|
||||
|
||||
|
||||
CREATE TRIGGER update_sys_menus_updated_at
|
||||
BEFORE UPDATE
|
||||
ON sys_menus
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_updated_at_column();
|
||||
|
||||
COMMENT ON COLUMN sys_menus.id IS '主键ID';
|
||||
COMMENT ON COLUMN sys_menus.name IS '菜单名称';
|
||||
COMMENT ON COLUMN sys_menus.path IS '菜单路径';
|
||||
COMMENT ON COLUMN sys_menus.component IS '组件路径';
|
||||
COMMENT ON COLUMN sys_menus.type IS '菜单类型 0: 目录 1: 菜单 2: button';
|
||||
COMMENT ON COLUMN sys_menus.sort IS '菜单排序';
|
||||
COMMENT ON COLUMN sys_menus.hidden IS '是否隐藏菜单';
|
||||
COMMENT ON COLUMN sys_menus.status IS '菜单状态 1: 启用 0: 禁用';
|
||||
COMMENT ON COLUMN sys_menus.parent_id IS '父级id';
|
||||
COMMENT ON COLUMN sys_menus.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN sys_menus.updated_at IS '更新时间';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE sys_apis
|
||||
(
|
||||
id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
group_name TEXT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
method TEXT NOT NULL,
|
||||
path TEXT NOT NULL,
|
||||
sort INTEGER DEFAULT 0,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ,
|
||||
|
||||
UNIQUE (method, path)
|
||||
);
|
||||
|
||||
CREATE TRIGGER update_sys_apis_updated_at
|
||||
BEFORE UPDATE
|
||||
ON sys_apis
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_updated_at_column();
|
||||
|
||||
COMMENT ON COLUMN sys_apis.id IS '主键ID';
|
||||
COMMENT ON COLUMN sys_apis.group_name IS '分组名称';
|
||||
COMMENT ON COLUMN sys_apis.name IS '接口名称';
|
||||
COMMENT ON COLUMN sys_apis.method IS 'api方法';
|
||||
COMMENT ON COLUMN sys_apis.path IS 'api路径';
|
||||
COMMENT ON COLUMN sys_apis.sort IS '排序';
|
||||
COMMENT ON COLUMN sys_apis.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN sys_apis.updated_at IS '更新时间';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE files
|
||||
(
|
||||
id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
file_name TEXT NOT NULL,
|
||||
file_path TEXT NOT NULL,
|
||||
original_name TEXT NOT NULL,
|
||||
folder_name TEXT NOT NULL,
|
||||
mime_type TEXT NOT NULL,
|
||||
file_size BIGINT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE TRIGGER update_files_updated_at
|
||||
BEFORE UPDATE
|
||||
ON files
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_updated_at_column();
|
||||
|
||||
COMMENT ON COLUMN files.id IS '主键ID';
|
||||
COMMENT ON COLUMN files.file_name IS '文件名 xxx.jpg';
|
||||
COMMENT ON COLUMN files.file_path IS '文件路径 带path /xxx/xxx.jpg';
|
||||
COMMENT ON COLUMN files.original_name IS '原始文件名';
|
||||
COMMENT ON COLUMN files.folder_name IS '文件夹名称';
|
||||
COMMENT ON COLUMN files.mime_type IS 'mime_type';
|
||||
COMMENT ON COLUMN files.file_size IS '文件大小';
|
||||
COMMENT ON COLUMN files.created_at IS '上传时间';
|
||||
COMMENT ON COLUMN files.updated_at IS '修改时间';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE sys_user_role
|
||||
(
|
||||
user_id INTEGER NOT NULL,
|
||||
role_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (user_id, role_id)
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN sys_user_role.user_id IS '用户ID';
|
||||
COMMENT ON COLUMN sys_user_role.role_id IS '角色ID';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE sys_role_permission
|
||||
(
|
||||
role_id INTEGER NOT NULL,
|
||||
permission_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (role_id, permission_id)
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN sys_role_permission.role_id IS '角色id';
|
||||
COMMENT ON COLUMN sys_role_permission.permission_id IS '权限id';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE sys_menu_permission
|
||||
(
|
||||
menu_id INTEGER NOT NULL,
|
||||
permission_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (menu_id, permission_id)
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN sys_menu_permission.menu_id IS '菜单id';
|
||||
COMMENT ON COLUMN sys_menu_permission.permission_id IS '权限id';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE sys_api_permission
|
||||
(
|
||||
api_id INTEGER NOT NULL,
|
||||
permission_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (api_id, permission_id)
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN sys_api_permission.api_id IS 'api ID';
|
||||
COMMENT ON COLUMN sys_api_permission.permission_id IS '权限id';
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user