create table if not exists storage_source
(
    id int auto_increment
        primary key,
    enable bit null comment '使用启用',
    enable_cache bit null comment '是否开启缓存',
    name varchar(255) null comment '存储源名称',
    auto_refresh_cache bit null comment '是否开启缓存自动刷新',
    type varchar(64) null comment '存储源类型',
    search_enable bit null comment '是否开启搜索',
    search_ignore_case bit null comment '搜索是否忽略大小写',
    order_num int null comment '排序',
    default_switch_to_img_mode bit null comment '是否默认开启图片模式',
    remark text null comment '备注',
    `key` varchar(64) null comment '存储源别名',
    enable_file_operator bit null comment '是否启用文件操作',
    search_mode varchar(32) null comment '搜索模式, 仅从缓存中搜索还是直接搜索',
    enable_file_anno_operator bit null comment '是否允许匿名进行文件操作'
)
    comment '存储源设置';

create table if not exists filter_config
(
    id int auto_increment
        primary key,
    storage_id int null comment '存储源 ID',
    expression varchar(255) null comment '路径表达式',
    description varchar(255) null comment '表达式描述',
    mode varchar(255) null
)
    comment '过滤设置';

create table if not exists short_link
(
    id int auto_increment
        primary key,
    short_key varchar(255) null comment '短链 key',
    url text null comment '链接 url',
    create_date datetime null comment '创建时间',
    storage_id int null comment '存储源 ID'
)
    comment '短链设置';

create table if not exists storage_source_config
(
    id int auto_increment
        primary key,
    name varchar(255) null comment '存储源属性 name',
    type text null comment '存储源类型',
    title varchar(255) null comment '存储源属性名称',
    storage_id int null comment '存储源 ID',
    value text null comment '存储源属性 value'
)
    comment '存储源属性设置';

create table if not exists system_config
(
    id int auto_increment
        primary key,
    name varchar(255) null comment '系统设置属性 name',
    value varchar(255) null comment '系统设置属性 value',
    title varchar(255) null comment '系统设置属性标题'
)
    comment '系统设置';

create table if not exists password_config
(
    id int auto_increment
        primary key,
    storage_id int null comment '存储源 ID',
    expression varchar(255) null comment '路径表达式',
    password varchar(255) null comment '密码',
    description varchar(255) null comment '表达式描述'
)
    comment '密码文件夹设置';

create table if not exists readme_config
(
    id int auto_increment
        primary key,
    storage_id int null comment '存储源 ID',
    expression varchar(255) null comment '路径表达式',
    description varchar(255) null comment '表达式描述',
    readme_text text null comment 'readme 文本内容, 支持 md 语法.',
    display_mode varchar(32) null comment '显示模式，支持顶部显示: top, 底部显示:bottom, 弹窗显示: dialog'
)
    comment 'readme 文档配置';

create table if not exists download_log
(
    id   int auto_increment primary key,
    path varchar(2048) null comment '文件路径',
    storage_key varchar(8) null comment '存储源 key',
    create_time datetime null comment '访问时间',
    ip varchar(20) null comment '访问 ip',
    user_agent varchar(2048) null comment '访问 user_agent',
    referer varchar(2048) null comment '访问 referer',
    short_key varchar(255) null comment '短链 key'
)
    comment '文件下载日志';