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");
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);
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, "领域已存在"); }
}
}