haixunMaster/app/api/accounts/bind/route.ts

40 lines
1.1 KiB
TypeScript
Raw Normal View History

2026-06-21 12:50:31 +00:00
import { NextResponse } from "next/server";
import { prisma } from "@/lib/db";
import { setActiveAccountForUser } from "@/lib/account-context";
import { apiRouteErrorResponse } from "@/lib/auth/api";
import { requireSessionUser } from "@/lib/auth/session";
/**
* API
*/
export async function POST() {
try {
const user = await requireSessionUser();
const existingUnbound = await prisma.account.findFirst({
where: { userId: user.id, threadsUserId: null },
orderBy: { updatedAt: "desc" },
select: { id: true },
});
const accountId =
existingUnbound?.id ??
(
await prisma.account.create({
data: {
userId: user.id,
displayName: "待綁定帳號",
storageState: "",
valid: false,
},
select: { id: true },
})
).id;
await setActiveAccountForUser(user.id, accountId);
return NextResponse.json({ accountId });
} catch (error) {
return apiRouteErrorResponse(error, "accounts/bind");
}
}