新增游戏功能记录模块

This commit is contained in:
DelLevin-Home
2026-07-06 01:33:42 +08:00
parent 0ad3713382
commit 4a7296f00f
32 changed files with 5735 additions and 37 deletions

View File

@@ -72,7 +72,7 @@ class DatabaseHelper {
return await openDatabase(
path,
version: 30,
version: 34,
onCreate: _createDB,
onUpgrade: _onUpgrade,
);
@@ -278,6 +278,67 @@ class DatabaseHelper {
await db.execute("ALTER TABLE reader_books ADD COLUMN authors TEXT DEFAULT ''");
}
}
if (oldVersion < 31) {
// 创建游戏表
await db.execute('''
CREATE TABLE IF NOT EXISTS games (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
cover_path TEXT,
rating REAL,
status TEXT NOT NULL DEFAULT 'want_to_play',
category TEXT NOT NULL DEFAULT 'digital',
platforms TEXT DEFAULT '[]',
versions TEXT DEFAULT '[]',
genres TEXT DEFAULT '[]',
play_time_hours INTEGER DEFAULT 0,
play_time_minutes INTEGER DEFAULT 0,
purchase_platforms TEXT DEFAULT '[]',
purchase_date TEXT,
purchase_price TEXT,
cover_offset REAL DEFAULT 0,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
is_deleted INTEGER DEFAULT 0
)
''');
}
if (oldVersion < 32) {
// games表添加summary字段
await db.execute('ALTER TABLE games ADD COLUMN summary TEXT');
}
if (oldVersion < 34) {
// 确保games表summary字段存在
final columns = await db.rawQuery('PRAGMA table_info(games)');
if (!columns.any((col) => col['name'] == 'summary')) {
await db.execute('ALTER TABLE games ADD COLUMN summary TEXT');
}
// 确保游戏评价表和游戏截图表存在
await db.execute('''
CREATE TABLE IF NOT EXISTS game_reviews (
id TEXT PRIMARY KEY,
game_id TEXT NOT NULL,
content TEXT NOT NULL,
reviewer TEXT,
source TEXT,
review_type INTEGER DEFAULT 1,
is_deleted INTEGER DEFAULT 0,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
FOREIGN KEY (game_id) REFERENCES games (id)
)
''');
await db.execute('''
CREATE TABLE IF NOT EXISTS game_screenshots (
id TEXT PRIMARY KEY,
game_id TEXT NOT NULL,
screenshot_path TEXT NOT NULL,
is_deleted INTEGER DEFAULT 0,
created_at TEXT NOT NULL,
FOREIGN KEY (game_id) REFERENCES games (id)
)
''');
}
}
/// 升级books表到V27添加阅读始末日期字段
@@ -831,6 +892,59 @@ class DatabaseHelper {
updated_at TEXT NOT NULL
)
''');
// 游戏表
await db.execute('''
CREATE TABLE games (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
cover_path TEXT,
rating REAL,
status TEXT NOT NULL DEFAULT 'want_to_play',
category TEXT NOT NULL DEFAULT 'digital',
platforms TEXT DEFAULT '[]',
versions TEXT DEFAULT '[]',
genres TEXT DEFAULT '[]',
play_time_hours INTEGER DEFAULT 0,
play_time_minutes INTEGER DEFAULT 0,
purchase_platforms TEXT DEFAULT '[]',
purchase_date TEXT,
purchase_price TEXT,
summary TEXT,
cover_offset REAL DEFAULT 0,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
is_deleted INTEGER DEFAULT 0
)
''');
// 游戏评价表
await db.execute('''
CREATE TABLE game_reviews (
id TEXT PRIMARY KEY,
game_id TEXT NOT NULL,
content TEXT NOT NULL,
reviewer TEXT,
source TEXT,
review_type INTEGER DEFAULT 1,
is_deleted INTEGER DEFAULT 0,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
FOREIGN KEY (game_id) REFERENCES games (id)
)
''');
// 游戏截图表
await db.execute('''
CREATE TABLE game_screenshots (
id TEXT PRIMARY KEY,
game_id TEXT NOT NULL,
screenshot_path TEXT NOT NULL,
is_deleted INTEGER DEFAULT 0,
created_at TEXT NOT NULL,
FOREIGN KEY (game_id) REFERENCES games (id)
)
''');
}
// 关闭数据库