Update schema.py

This commit is contained in:
zhaoyulin1117 2025-10-16 16:19:03 +08:00 committed by GitHub
parent dd177204ae
commit 6712da907d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,41 +1,48 @@
USER_VERSION = 2 # 数据库版本号,用于控制数据库迁移(当结构变更时递增版本号)
APPLICATION_ID = 2060242126 # 应用标识ID通常用于区分不同应用的数据库避免冲突
# 数据库版本号,用于跟踪数据库结构的更改
USER_VERSION = 2
# SQLite数据库的应用程序ID用于标识特定应用程序的数据库文件
APPLICATION_ID = 2060242126
# 数据库架构定义包含创建表的SQL语句列表
SCHEMA = [
# 创建items表存储应用中的所有项目信息
"""
CREATE TABLE items (
id INTEGER PRIMARY KEY,
type TEXT NOT NULL,
x REAL DEFAULT 0,
y REAL DEFAULT 0,
z REAL DEFAULT 0,
scale REAL DEFAULT 1,
rotation REAL DEFAULT 0,
flip INTEGER DEFAULT 1,
data JSON
id INTEGER PRIMARY KEY, # 主键,唯一标识每个项目
type TEXT NOT NULL, # 项目类型,如图片、文本等
x REAL DEFAULT 0, # X坐标位置
y REAL DEFAULT 0, # Y坐标位置
z REAL DEFAULT 0, # Z轴位置用于确定项目的显示顺序
scale REAL DEFAULT 1, # 缩放比例
rotation REAL DEFAULT 0, # 旋转角度(以度为单位)
flip INTEGER DEFAULT 1, # 翻转状态,用于水平或垂直翻转项目
data JSON # JSON格式的数据存储项目的其他属性
)
""",
# 创建sqlar表用于存储与项目关联的二进制数据
"""
CREATE TABLE sqlar (
name TEXT PRIMARY KEY,
item_id INTEGER NOT NULL UNIQUE,
mode INT,
mtime INT default current_timestamp,
sz INT,
data BLOB,
FOREIGN KEY (item_id)
name TEXT PRIMARY KEY, # 文件名作为主键
item_id INTEGER NOT NULL UNIQUE, # 关联的items表中的项目ID
mode INT, # 文件模式
mtime INT default current_timestamp, # 修改时间戳
sz INT, # 文件大小
data BLOB, # 二进制数据内容
FOREIGN KEY (item_id) # 外键约束关联items表
REFERENCES items (id)
ON DELETE CASCADE
ON UPDATE NO ACTION
ON DELETE CASCADE # 级联删除当items表中的记录被删除时相关的sqlar记录也会被删除
ON UPDATE NO ACTION # 禁止更新关联字段
)
""",
]
# 数据库迁移定义键为目标版本号值为实现该版本升级所需的SQL语句列表
MIGRATIONS = {
# 从版本1迁移到版本2的SQL语句
2: [
"ALTER TABLE items ADD COLUMN data JSON",
"UPDATE items SET data = json_object('filename', filename)",
"ALTER TABLE items ADD COLUMN data JSON", # 添加JSON类型的data列
"UPDATE items SET data = json_object('filename', filename)", # 将原有的filename数据迁移到新的JSON格式中
],
}