Files
wechat-radar/app/api/message-links/resolve/route.ts
T

49 lines
1.4 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { upsertResolvedLinkForMessage } from '@/lib/message-links';
export const dynamic = 'force-dynamic';
export async function POST(req: NextRequest) {
const body = (await req.json().catch(() => ({}))) as {
chatroom_id?: string;
local_id?: number;
url?: string;
title?: string;
description?: string;
source?: 'public_search' | 'manual';
confidence?: number;
};
if (!body.chatroom_id || !Number.isInteger(body.local_id) || !body.url) {
return NextResponse.json(
{ ok: false, error: 'chatroom_id, local_id and url are required' },
{ status: 400 },
);
}
const localId = body.local_id;
if (localId === undefined) {
return NextResponse.json({ ok: false, error: 'local_id is required' }, { status: 400 });
}
const source = body.source ?? 'manual';
if (source !== 'manual' && source !== 'public_search') {
return NextResponse.json({ ok: false, error: 'invalid source' }, { status: 400 });
}
const result = upsertResolvedLinkForMessage({
chatroom_id: body.chatroom_id,
local_id: localId,
url: body.url,
title: body.title,
description: body.description,
source,
confidence: body.confidence,
});
if (!result.ok) {
return NextResponse.json(result, { status: 400 });
}
return NextResponse.json({ ok: true });
}