@@ -155,7 +155,7 @@ export async function initDatabase(db) {
155155 expires_at DATETIME,
156156 max_views INTEGER,
157157 views INTEGER DEFAULT 0,
158- use_proxy BOOLEAN DEFAULT 1 ,
158+ use_proxy BOOLEAN DEFAULT 0 ,
159159
160160 -- 元数据
161161 created_by TEXT,
@@ -1164,6 +1164,109 @@ async function migrateDatabase(db, currentVersion, targetVersion) {
11641164 console . log ( "预览设置迁移失败,请手动检查system_settings表" ) ;
11651165 }
11661166 break ;
1167+
1168+ case 14 :
1169+ // 版本14:修改files表的use_proxy默认值为0(不使用代理)
1170+ try {
1171+ console . log ( "开始修改files表的use_proxy默认值..." ) ;
1172+
1173+ // 检查files表是否存在
1174+ const filesTableExists = await db . prepare ( `SELECT name FROM sqlite_master WHERE type='table' AND name='${ DbTables . FILES } '` ) . first ( ) ;
1175+
1176+ if ( filesTableExists ) {
1177+ // SQLite不支持直接修改列的默认值,需要重建表
1178+ console . log ( "创建新的files表结构(use_proxy默认值为0)..." ) ;
1179+
1180+ // 1. 创建新表结构
1181+ await db
1182+ . prepare (
1183+ `
1184+ CREATE TABLE ${ DbTables . FILES } _new (
1185+ id TEXT PRIMARY KEY,
1186+ slug TEXT UNIQUE NOT NULL,
1187+ filename TEXT NOT NULL,
1188+
1189+ -- 存储引用(支持多存储类型)
1190+ storage_config_id TEXT NOT NULL,
1191+ storage_type TEXT NOT NULL,
1192+ storage_path TEXT NOT NULL,
1193+ file_path TEXT,
1194+
1195+ -- 文件元数据
1196+ mimetype TEXT NOT NULL,
1197+ size INTEGER NOT NULL,
1198+ etag TEXT,
1199+
1200+ -- 分享控制(保持现有功能)
1201+ remark TEXT,
1202+ password TEXT,
1203+ expires_at DATETIME,
1204+ max_views INTEGER,
1205+ views INTEGER DEFAULT 0,
1206+ use_proxy BOOLEAN DEFAULT 0, -- 修改默认值为0
1207+
1208+ -- 元数据
1209+ created_by TEXT,
1210+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
1211+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
1212+ )
1213+ `
1214+ )
1215+ . run ( ) ;
1216+
1217+ // 2. 复制数据到新表
1218+ console . log ( "复制数据到新表..." ) ;
1219+ await db
1220+ . prepare (
1221+ `
1222+ INSERT INTO ${ DbTables . FILES } _new
1223+ SELECT * FROM ${ DbTables . FILES }
1224+ `
1225+ )
1226+ . run ( ) ;
1227+
1228+ // 3. 删除旧表
1229+ console . log ( "删除旧表..." ) ;
1230+ await db . prepare ( `DROP TABLE ${ DbTables . FILES } ` ) . run ( ) ;
1231+
1232+ // 4. 重命名新表
1233+ console . log ( "重命名新表..." ) ;
1234+ await db . prepare ( `ALTER TABLE ${ DbTables . FILES } _new RENAME TO ${ DbTables . FILES } ` ) . run ( ) ;
1235+
1236+ // 5. 重建索引
1237+ console . log ( "重建索引..." ) ;
1238+ await db . prepare ( `CREATE INDEX IF NOT EXISTS idx_files_slug ON ${ DbTables . FILES } (slug)` ) . run ( ) ;
1239+ await db . prepare ( `CREATE INDEX IF NOT EXISTS idx_files_created_at ON ${ DbTables . FILES } (created_at DESC)` ) . run ( ) ;
1240+ await db . prepare ( `CREATE INDEX IF NOT EXISTS idx_files_created_by ON ${ DbTables . FILES } (created_by)` ) . run ( ) ;
1241+ await db . prepare ( `CREATE INDEX IF NOT EXISTS idx_files_storage_config ON ${ DbTables . FILES } (storage_config_id)` ) . run ( ) ;
1242+
1243+ console . log ( "files表use_proxy默认值修改完成" ) ;
1244+ } else {
1245+ console . log ( "files表不存在,跳过迁移" ) ;
1246+ }
1247+
1248+ // 添加全局默认代理设置
1249+ console . log ( "添加全局默认代理设置..." ) ;
1250+ const defaultUseProxySetting = await db . prepare ( `SELECT key FROM ${ DbTables . SYSTEM_SETTINGS } WHERE key = 'default_use_proxy'` ) . first ( ) ;
1251+
1252+ if ( ! defaultUseProxySetting ) {
1253+ await db
1254+ . prepare (
1255+ `
1256+ INSERT INTO ${ DbTables . SYSTEM_SETTINGS } (key, value, description, type, group_id, options, sort_order, flags)
1257+ VALUES ('default_use_proxy', 'false', '文件管理的默认代理设置。启用后新上传文件默认使用Worker代理,禁用后默认使用直链。', 'bool', 1, NULL, 4, 0)
1258+ `
1259+ )
1260+ . run ( ) ;
1261+ console . log ( "全局默认代理设置添加完成" ) ;
1262+ } else {
1263+ console . log ( "全局默认代理设置已存在,跳过添加" ) ;
1264+ }
1265+ } catch ( error ) {
1266+ console . error ( `版本14迁移失败:` , error ) ;
1267+ console . log ( "use_proxy默认值修改失败,请手动检查files表结构" ) ;
1268+ }
1269+ break ;
11671270 }
11681271
11691272 // 记录迁移历史
@@ -1341,7 +1444,7 @@ export async function checkAndInitDatabase(db) {
13411444 }
13421445
13431446 // 如果要添加新表或修改现有表,请递增目标版本,修改后启动时自动更新数据库
1344- const targetVersion = 13 ; // 目标schema版本,每次修改表结构时递增
1447+ const targetVersion = 14 ; // 目标schema版本,每次修改表结构时递增
13451448
13461449 if ( currentVersion < targetVersion ) {
13471450 console . log ( `需要更新数据库结构,当前版本:${ currentVersion } ,目标版本:${ targetVersion } ` ) ;
0 commit comments