feat: remove storage type in config

This commit is contained in:
shinya
2025-06-23 20:45:06 +08:00
parent 80addfff08
commit 44cd7d0ed3
6 changed files with 12 additions and 34 deletions

View File

@@ -1,7 +1,4 @@
{ {
"cache_time": 7200, "cache_time": 7200,
"api_site": {}, "api_site": {}
"storage": {
"type": "localstorage"
}
} }

View File

@@ -81,8 +81,5 @@
"api": "https://ikunzyapi.com/api.php/provide/vod", "api": "https://ikunzyapi.com/api.php/provide/vod",
"name": "iKun资源" "name": "iKun资源"
} }
},
"storage": {
"type": "localstorage"
} }
} }

View File

@@ -9,24 +9,14 @@ const nextConfig = {
swcMinify: true, swcMinify: true,
/** /**
* 在编译阶段把 storage.type 写入环境变量,供浏览器端动态切换存储方案 * 在编译阶段将 STORAGE_TYPE 写入环境变量,供浏览器端与服务端统一读取
*/ */
env: (function () { env: (function () {
const fs = require('fs'); // 编译阶段优先使用传入的环境变量;默认 localstorage
const path = require('path'); const storageType = process.env.STORAGE_TYPE || 'localstorage';
let storageType = 'localstorage';
try {
const json = JSON.parse(
fs.readFileSync(path.join(__dirname, 'config.json'), 'utf-8')
);
storageType = json?.storage?.type ?? 'localstorage';
} catch {
// ignore 保持默认值
}
return { return {
NEXT_PUBLIC_STORAGE_TYPE: storageType, STORAGE_TYPE: storageType,
}; };
})(), })(),

View File

@@ -74,8 +74,3 @@ export function getApiSites(): ApiSite[] {
key, key,
})); }));
} }
export function getStorageConfig(): StorageConfig {
const config = getConfig();
return config.storage || { type: 'localstorage' };
}

View File

@@ -31,10 +31,8 @@ const PLAY_RECORDS_KEY = 'moontv_play_records';
// ---- 环境变量 ---- // ---- 环境变量 ----
const STORAGE_TYPE = const STORAGE_TYPE =
(process.env.NEXT_PUBLIC_STORAGE_TYPE as (process.env.STORAGE_TYPE as 'localstorage' | 'database' | undefined) ||
| 'localstorage' 'localstorage';
| 'database'
| undefined) || 'localstorage';
// ---------------- 搜索历史相关常量 ---------------- // ---------------- 搜索历史相关常量 ----------------
const SEARCH_HISTORY_KEY = 'moontv_search_history'; const SEARCH_HISTORY_KEY = 'moontv_search_history';

View File

@@ -1,6 +1,9 @@
/* eslint-disable no-console */ /* eslint-disable no-console */
import { getStorageConfig } from './config'; // storage type 常量: 'localstorage' | 'database',默认 'localstorage'
const STORAGE_TYPE =
(process.env.STORAGE_TYPE as 'localstorage' | 'database' | undefined) ||
'localstorage';
// 播放记录数据结构 // 播放记录数据结构
export interface PlayRecord { export interface PlayRecord {
@@ -85,9 +88,7 @@ class DatabaseStorage implements IStorage {
// 创建存储实例 // 创建存储实例
function createStorage(): IStorage { function createStorage(): IStorage {
const config = getStorageConfig(); switch (STORAGE_TYPE) {
switch (config.type) {
case 'database': case 'database':
return new DatabaseStorage(); return new DatabaseStorage();
case 'localstorage': case 'localstorage':