forked from syntaxbullet/aurorabot
feat: Implement an admin quest management table, enhance toast notifications with descriptions, and add new agent documentation.
This commit is contained in:
@@ -222,6 +222,67 @@ export async function createWebServer(config: WebServerConfig = {}): Promise<Web
|
||||
}
|
||||
}
|
||||
|
||||
if (url.pathname.startsWith("/api/quests/") && req.method === "DELETE") {
|
||||
const id = parseInt(url.pathname.split("/").pop() || "0", 10);
|
||||
|
||||
if (!id) {
|
||||
return Response.json({ error: "Invalid quest ID" }, { status: 400 });
|
||||
}
|
||||
|
||||
try {
|
||||
const { questService } = await import("@shared/modules/quest/quest.service");
|
||||
const result = await questService.deleteQuest(id);
|
||||
|
||||
if (result.length === 0) {
|
||||
return Response.json({ error: "Quest not found" }, { status: 404 });
|
||||
}
|
||||
|
||||
return Response.json({ success: true, deleted: result[0].id });
|
||||
} catch (error) {
|
||||
logger.error("web", "Error deleting quest", error);
|
||||
return Response.json(
|
||||
{ error: "Failed to delete quest", details: error instanceof Error ? error.message : String(error) },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (url.pathname.startsWith("/api/quests/") && req.method === "PUT") {
|
||||
const id = parseInt(url.pathname.split("/").pop() || "0", 10);
|
||||
|
||||
if (!id) {
|
||||
return Response.json({ error: "Invalid quest ID" }, { status: 400 });
|
||||
}
|
||||
|
||||
try {
|
||||
const { questService } = await import("@shared/modules/quest/quest.service");
|
||||
const data = await req.json();
|
||||
|
||||
const result = await questService.updateQuest(id, {
|
||||
name: data.name,
|
||||
description: data.description,
|
||||
triggerEvent: data.triggerEvent,
|
||||
requirements: { target: Number(data.target) || 1 },
|
||||
rewards: {
|
||||
xp: Number(data.xpReward) || 0,
|
||||
balance: Number(data.balanceReward) || 0
|
||||
}
|
||||
});
|
||||
|
||||
if (result.length === 0) {
|
||||
return Response.json({ error: "Quest not found" }, { status: 404 });
|
||||
}
|
||||
|
||||
return Response.json({ success: true, quest: result[0] });
|
||||
} catch (error) {
|
||||
logger.error("web", "Error updating quest", error);
|
||||
return Response.json(
|
||||
{ error: "Failed to update quest", details: error instanceof Error ? error.message : String(error) },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Settings Management
|
||||
if (url.pathname === "/api/settings") {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user