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,
"api_site": {},
"storage": {
"type": "localstorage"
}
"api_site": {}
}

View File

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

View File

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

View File

@@ -74,8 +74,3 @@ export function getApiSites(): ApiSite[] {
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 =
(process.env.NEXT_PUBLIC_STORAGE_TYPE as
| 'localstorage'
| 'database'
| undefined) || 'localstorage';
(process.env.STORAGE_TYPE as 'localstorage' | 'database' | undefined) ||
'localstorage';
// ---------------- 搜索历史相关常量 ----------------
const SEARCH_HISTORY_KEY = 'moontv_search_history';

View File

@@ -1,6 +1,9 @@
/* 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 {
@@ -85,9 +88,7 @@ class DatabaseStorage implements IStorage {
// 创建存储实例
function createStorage(): IStorage {
const config = getStorageConfig();
switch (config.type) {
switch (STORAGE_TYPE) {
case 'database':
return new DatabaseStorage();
case 'localstorage':