187b08c3e1
Co-authored-by: Cursor <cursoragent@cursor.com>
67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
import { NextResponse } from "next/server";
|
|
import { getHistoryUsername } from "@/lib/history/request-user";
|
|
import {
|
|
addHistoryEntry,
|
|
historyStoreErrorMessage,
|
|
listHistoryEntries,
|
|
} from "@/lib/history/server-store";
|
|
import type { CalcHistoryCreate } from "@/lib/history/types";
|
|
|
|
export async function GET() {
|
|
try {
|
|
const username = await getHistoryUsername();
|
|
if (!username) {
|
|
return NextResponse.json({ error: "请先登录" }, { status: 401 });
|
|
}
|
|
|
|
const items = await listHistoryEntries(username);
|
|
return NextResponse.json({ items });
|
|
} catch (err) {
|
|
console.error("[history GET]", err);
|
|
return NextResponse.json(
|
|
{ error: historyStoreErrorMessage(err) },
|
|
{ status: 500 },
|
|
);
|
|
}
|
|
}
|
|
|
|
export async function POST(req: Request) {
|
|
try {
|
|
const username = await getHistoryUsername();
|
|
if (!username) {
|
|
return NextResponse.json({ error: "请先登录" }, { status: 401 });
|
|
}
|
|
|
|
let body: CalcHistoryCreate;
|
|
try {
|
|
body = (await req.json()) as CalcHistoryCreate;
|
|
} catch {
|
|
return NextResponse.json({ error: "请求格式错误" }, { status: 400 });
|
|
}
|
|
|
|
if (!body.mode || !body.title || !body.question || !body.completion) {
|
|
return NextResponse.json({ error: "缺少必填字段" }, { status: 400 });
|
|
}
|
|
|
|
const entry = await addHistoryEntry(username, {
|
|
mode: body.mode,
|
|
title: body.title,
|
|
question: body.question,
|
|
summary: body.summary ?? "",
|
|
completion: body.completion,
|
|
meta: body.meta ?? {},
|
|
baziInput: body.baziInput,
|
|
baziChart: body.baziChart,
|
|
hexagram: body.hexagram,
|
|
});
|
|
|
|
return NextResponse.json({ entry });
|
|
} catch (err) {
|
|
console.error("[history POST]", err);
|
|
return NextResponse.json(
|
|
{ error: historyStoreErrorMessage(err) },
|
|
{ status: 500 },
|
|
);
|
|
}
|
|
}
|