From: CodeBuddy Date: Mon, 28 Sep 2026 03:44:41 +0000 (+0800) Subject: db-sidecar: 领域支持 color 字段(默认颜色配置),新增 PUT /api/domains/{id} X-Git-Url: http://acesimba.cloud/gitweb/?a=commitdiff_plain;h=d95d3540616fa966df09461285ebaea22132ff42;p=StationBuilder.git db-sidecar: 领域支持 color 字段(默认颜色配置),新增 PUT /api/domains/{id} --- diff --git a/data/db/StationBuilder.sqlite b/data/db/StationBuilder.sqlite index 6ee0bcb..5f05003 100644 Binary files a/data/db/StationBuilder.sqlite and b/data/db/StationBuilder.sqlite differ diff --git a/db-sidecar.mjs b/db-sidecar.mjs index d0eca65..41a0bd3 100644 --- a/db-sidecar.mjs +++ b/db-sidecar.mjs @@ -391,6 +391,7 @@ ensureColumn("sites", "app_name", "TEXT"); ensureColumn("sites", "app_icon", "TEXT"); ensureColumn("sites", "app_icon_filename", "TEXT"); ensureColumn("sites", "app_color_scheme", "TEXT DEFAULT 'blue'"); +ensureColumn("domains", "color", "TEXT"); ensureColumn("menu_items", "source_key", "TEXT"); ensureColumn("sites", "template_id", "INTEGER"); ensureColumn("sites", "template_applied_at", "TEXT"); @@ -2599,6 +2600,18 @@ async function route(req, res) { try { if (mHealth && req.method === "GET") return respondJson(res, 200, { ok: true }); if (mMuTree && req.method === "GET") return respondJson(res, 200, MU_TREE); + if (mDomainOne && req.method === "PUT") { + const id = Number(mDomainOne[1]); + const body = await parseBody(req); + const dom = db.prepare("SELECT * FROM domains WHERE id=?").get(id); + if (!dom) return respondError(res, 404, "领域不存在"); + if (dom.name === "其他") return respondError(res, 400, "不能编辑「其他」领域"); + const name = body.name != null ? String(body.name) : dom.name; + if (name.length > 6) return respondError(res, 400, "领域最多6个字符"); + const color = body.color != null ? String(body.color) : (dom.color || ""); + db.prepare("UPDATE domains SET name=?, color=? WHERE id=?").run(name, color, id); + return respondJson(res, 200, { ok: true }); + } if (mDomainOne && req.method === "DELETE") { const id = Number(mDomainOne[1]); const dom = db.prepare("SELECT * FROM domains WHERE id=?").get(id); @@ -2618,7 +2631,7 @@ async function route(req, res) { if (req.method === "POST") { const body = await parseBody(req); if (!body.name || body.name.length > 6) return respondError(res, 400, "领域最多6个字符"); - try { const info = db.prepare("INSERT INTO domains (name) VALUES (?)").run(body.name); return respondJson(res, 200, { id: info.lastInsertRowid, name: body.name }); } + try { const info = db.prepare("INSERT INTO domains (name, color) VALUES (?, ?)").run(body.name, body.color || ""); return respondJson(res, 200, { id: info.lastInsertRowid, name: body.name, color: body.color || "" }); } catch (e) { return respondError(res, 409, "领域已存在"); } } }