-- ============================================================
-- 系统菜单表（菜单 + 按钮权限共用）
-- ============================================================

CREATE SCHEMA IF NOT EXISTS sys;

CREATE TABLE sys.menu (
    id              BIGSERIAL       PRIMARY KEY,
    parent_id       BIGINT          NOT NULL DEFAULT 0,
    menu_type       SMALLINT        NOT NULL DEFAULT 1,
    name            VARCHAR(64)     NOT NULL DEFAULT '',
    path            VARCHAR(256)    NOT NULL DEFAULT '',
    component       VARCHAR(256)    NOT NULL DEFAULT '',
    redirect        VARCHAR(256)    NOT NULL DEFAULT '',
    icon            VARCHAR(64)     NOT NULL DEFAULT '',
    title           VARCHAR(64)     NOT NULL,
    link            VARCHAR(512)    NOT NULL DEFAULT '',
    is_iframe       BOOLEAN         NOT NULL DEFAULT FALSE,
    is_hide         BOOLEAN         NOT NULL DEFAULT FALSE,
    is_hide_tab     BOOLEAN         NOT NULL DEFAULT FALSE,
    is_full_page    BOOLEAN         NOT NULL DEFAULT FALSE,
    is_first_level  BOOLEAN         NOT NULL DEFAULT FALSE,
    keep_alive      BOOLEAN         NOT NULL DEFAULT FALSE,
    fixed_tab       BOOLEAN         NOT NULL DEFAULT FALSE,
    show_badge      BOOLEAN         NOT NULL DEFAULT FALSE,
    show_text_badge VARCHAR(32)     NOT NULL DEFAULT '',
    active_path     VARCHAR(256)    NOT NULL DEFAULT '',
    auth_name       VARCHAR(64)     NOT NULL DEFAULT '',
    auth_mark       VARCHAR(64)     NOT NULL DEFAULT '',
    bit_position    INTEGER,
    sort            INT             NOT NULL DEFAULT 0,
    enabled         BOOLEAN         NOT NULL DEFAULT TRUE,
    create_time     TIMESTAMP     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    update_time     TIMESTAMP     NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX idx_sys_menu_parent_id ON sys.menu (parent_id);

COMMENT ON TABLE sys.menu IS '系统菜单表（菜单与按钮权限共用）';
COMMENT ON COLUMN sys.menu.id IS '菜单ID';
COMMENT ON COLUMN sys.menu.parent_id IS '父级菜单ID（0表示一级菜单）';
COMMENT ON COLUMN sys.menu.menu_type IS '类型：1-菜单 2-按钮权限';
COMMENT ON COLUMN sys.menu.name IS '路由名称（唯一标识，如 SystemUser）';
COMMENT ON COLUMN sys.menu.path IS '路由路径（一级以/开头，子级不以/开头）';
COMMENT ON COLUMN sys.menu.component IS '组件路径（相对于 src/views，如 system/user/index）';
COMMENT ON COLUMN sys.menu.redirect IS '重定向路径';
COMMENT ON COLUMN sys.menu.icon IS '菜单图标';
COMMENT ON COLUMN sys.menu.title IS '菜单标题';
COMMENT ON COLUMN sys.menu.link IS '外部链接URL';
COMMENT ON COLUMN sys.menu.is_iframe IS '是否为iframe内嵌';
COMMENT ON COLUMN sys.menu.is_hide IS '是否在菜单中隐藏';
COMMENT ON COLUMN sys.menu.is_hide_tab IS '是否在标签页中隐藏';
COMMENT ON COLUMN sys.menu.is_full_page IS '是否全屏页面';
COMMENT ON COLUMN sys.menu.is_first_level IS '是否为一级菜单（无子菜单的独立页面）';
COMMENT ON COLUMN sys.menu.keep_alive IS '是否缓存页面';
COMMENT ON COLUMN sys.menu.fixed_tab IS '是否固定标签页';
COMMENT ON COLUMN sys.menu.show_badge IS '是否显示徽章';
COMMENT ON COLUMN sys.menu.show_text_badge IS '文本徽章内容';
COMMENT ON COLUMN sys.menu.active_path IS '高亮的菜单路径';
COMMENT ON COLUMN sys.menu.auth_name IS '按钮权限名称（menu_type=2时使用）';
COMMENT ON COLUMN sys.menu.auth_mark IS '按钮权限标识（menu_type=2时使用，如 btn_add）';
COMMENT ON COLUMN sys.menu.bit_position IS '权限位图位置（按钮权限专用，从0开始）';
COMMENT ON COLUMN sys.menu.sort IS '排序（数值越小越靠前）';
COMMENT ON COLUMN sys.menu.enabled IS '是否启用';
COMMENT ON COLUMN sys.menu.create_time IS '创建时间';
COMMENT ON COLUMN sys.menu.update_time IS '更新时间';
