66 lines
3.0 KiB
SQL
66 lines
3.0 KiB
SQL
|
|
-- 1.软件应用表:管理所有接入自动更新系统的软件
|
||
|
|
CREATE TABLE IF NOT EXISTS apps (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, -- 自增主键ID
|
||
|
|
app_id TEXT NOT NULL UNIQUE, -- 软件唯一标识(客户端用来区分不同软件)
|
||
|
|
app_name TEXT NOT NULL -- 软件展示名称
|
||
|
|
);
|
||
|
|
|
||
|
|
-- 2.软件版本表:存储每个软件各个渠道下的所有版本号
|
||
|
|
CREATE TABLE IF NOT EXISTS versions (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, -- 版本自增主键version_id,关联文件表
|
||
|
|
app_id TEXT NOT NULL, -- 关联apps表的软件唯一标识
|
||
|
|
channel TEXT DEFAULT 'stable', -- 更新渠道:stable正式稳定版 / beta测试版
|
||
|
|
version TEXT NOT NULL, -- 版本号,如1.0.0、1.0.2
|
||
|
|
latest INTEGER DEFAULT 0, -- 是否为当前渠道最新版本:1=是最新,0=历史旧版
|
||
|
|
create_time TEXT DEFAULT (datetime('now')), -- 新增:版本创建时间
|
||
|
|
UNIQUE(app_id, channel, version) -- 联合唯一约束:同一个软件+渠道不能重复存在相同版本
|
||
|
|
);
|
||
|
|
|
||
|
|
-- 3.版本关联文件表:记录每个版本需要更新的全部文件信息(exe、dll、资源文件)
|
||
|
|
CREATE TABLE IF NOT EXISTS version_files (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, -- 文件记录自增ID
|
||
|
|
version_id INTEGER NOT NULL, -- 关联versions表的版本主键id
|
||
|
|
path TEXT NOT NULL, -- 文件在MinIO存储桶内的完整路径
|
||
|
|
sha256 TEXT NOT NULL, -- 文件哈希值,客户端下载后做完整性/防篡改校验
|
||
|
|
size INTEGER -- 文件字节大小,用于计算下载进度、校验磁盘空间
|
||
|
|
);
|
||
|
|
|
||
|
|
-- 4.升级日志记录表:存储所有客户端上报的升级结果,用于后台统计排查问题
|
||
|
|
CREATE TABLE IF NOT EXISTS upgrade_logs (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT, -- 日志自增主键
|
||
|
|
device_id TEXT, -- 用户设备唯一标识,区分不同电脑客户端
|
||
|
|
from_ver TEXT, -- 升级前本地旧版本号
|
||
|
|
to_ver TEXT, -- 升级目标新版本号
|
||
|
|
result TEXT, -- 升级结果:success成功 / fail失败
|
||
|
|
create_time TEXT -- 升级上报时间
|
||
|
|
);
|
||
|
|
|
||
|
|
--5.日志数据表
|
||
|
|
CREATE TABLE IF NOT EXISTS update_report (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
device_id TEXT NOT NULL,
|
||
|
|
app_id TEXT NOT NULL,
|
||
|
|
from_version TEXT NOT NULL,
|
||
|
|
to_version TEXT NOT NULL,
|
||
|
|
result TEXT NOT NULL,
|
||
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
-- 6. 每个应用/渠道的运行与升级策略;每次保存必须递增 policy_seq
|
||
|
|
CREATE TABLE IF NOT EXISTS version_policies (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
app_id TEXT NOT NULL,
|
||
|
|
channel TEXT NOT NULL DEFAULT 'stable',
|
||
|
|
policy_seq INTEGER NOT NULL DEFAULT 1,
|
||
|
|
force_update INTEGER NOT NULL DEFAULT 0,
|
||
|
|
allow_rollback INTEGER NOT NULL DEFAULT 0,
|
||
|
|
offline_allowed INTEGER NOT NULL DEFAULT 1,
|
||
|
|
valid_until TEXT NOT NULL,
|
||
|
|
min_supported_version TEXT NOT NULL DEFAULT '',
|
||
|
|
disabled_versions TEXT NOT NULL DEFAULT '[]',
|
||
|
|
message TEXT NOT NULL DEFAULT '',
|
||
|
|
created_at TEXT DEFAULT (datetime('now')),
|
||
|
|
updated_at TEXT DEFAULT (datetime('now')),
|
||
|
|
UNIQUE(app_id, channel)
|
||
|
|
);
|