]> acesimba.cloud Git - StationBuilder.git/commitdiff
db-sidecar: 领域支持 color 字段(默认颜色配置),新增 PUT /api/domains/{id}
authorCodeBuddy <codebuddy@local>
Mon, 28 Sep 2026 03:44:41 +0000 (11:44 +0800)
committerCodeBuddy <codebuddy@local>
Mon, 28 Sep 2026 03:44:41 +0000 (11:44 +0800)
data/db/StationBuilder.sqlite
db-sidecar.mjs

index 6ee0bcbae4553c45cad71c92990789b37f0784ac..5f05003b42bcb0fceee30c428d129fa77006e673 100644 (file)
Binary files a/data/db/StationBuilder.sqlite and b/data/db/StationBuilder.sqlite differ
index d0eca65fa95b6e20a7af46c368c22faf0c8a9844..41a0bd35d0c75ef5abed012ac451947574f6470c 100644 (file)
@@ -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, "领域已存在"); }
       }
     }