fix: 修改更新终端样式报错的问题
This commit is contained in:
@@ -182,16 +182,37 @@ export const createTheme = async (themeDto: CreateTerminalThemeDto): Promise<Ter
|
|||||||
* @returns Promise<boolean> 是否成功更新
|
* @returns Promise<boolean> 是否成功更新
|
||||||
*/
|
*/
|
||||||
export const updateTheme = async (id: number, themeDto: UpdateTerminalThemeDto): Promise<boolean> => {
|
export const updateTheme = async (id: number, themeDto: UpdateTerminalThemeDto): Promise<boolean> => {
|
||||||
const now = Date.now();
|
const nowSeconds = Math.floor(Date.now() / 1000);
|
||||||
const themeDataJson = JSON.stringify(themeDto.themeData);
|
const theme = themeDto.themeData;
|
||||||
|
|
||||||
|
const setClauses = [
|
||||||
|
'name = ?',
|
||||||
|
'foreground = ?', 'background = ?', 'cursor = ?', 'cursor_accent = ?',
|
||||||
|
'selection_background = ?', 'black = ?', 'red = ?', 'green = ?', 'yellow = ?', 'blue = ?',
|
||||||
|
'magenta = ?', 'cyan = ?', 'white = ?', 'bright_black = ?', 'bright_red = ?', 'bright_green = ?',
|
||||||
|
'bright_yellow = ?', 'bright_blue = ?', 'bright_magenta = ?', 'bright_cyan = ?', 'bright_white = ?',
|
||||||
|
'updated_at = ?'
|
||||||
|
];
|
||||||
|
|
||||||
|
const values = [
|
||||||
|
themeDto.name,
|
||||||
|
theme?.foreground ?? null, theme?.background ?? null, theme?.cursor ?? null, theme?.cursorAccent ?? null,
|
||||||
|
theme?.selectionBackground ?? null, theme?.black ?? null, theme?.red ?? null, theme?.green ?? null, theme?.yellow ?? null, theme?.blue ?? null,
|
||||||
|
theme?.magenta ?? null, theme?.cyan ?? null, theme?.white ?? null, theme?.brightBlack ?? null, theme?.brightRed ?? null, theme?.brightGreen ?? null,
|
||||||
|
theme?.brightYellow ?? null, theme?.brightBlue ?? null, theme?.brightMagenta ?? null, theme?.brightCyan ?? null, theme?.brightWhite ?? null,
|
||||||
|
nowSeconds,
|
||||||
|
id // For WHERE clause
|
||||||
|
];
|
||||||
|
|
||||||
const sql = `
|
const sql = `
|
||||||
UPDATE terminal_themes
|
UPDATE terminal_themes
|
||||||
SET name = ?, theme_data = ?, updated_at = ?
|
SET ${setClauses.join(', ')}
|
||||||
WHERE id = ? AND is_preset = 0
|
WHERE id = ? AND theme_type = 'user'
|
||||||
`;
|
`;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const db = await getDbInstance();
|
const db = await getDbInstance();
|
||||||
const result = await runDb(db, sql, [themeDto.name, themeDataJson, now, id]);
|
const result = await runDb(db, sql, values);
|
||||||
return result.changes > 0;
|
return result.changes > 0;
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
console.error(`更新 ID 为 ${id} 的终端主题失败:`, err.message);
|
console.error(`更新 ID 为 ${id} 的终端主题失败:`, err.message);
|
||||||
|
|||||||
Reference in New Issue
Block a user