"use server"; import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; import { createUser } from "~/server/functions"; import { middleware } from "~/middleware"; type CreateUserRequest = { username: string; email: string; passwordHash: string; name: string; pfpURL?: string; pushToken?: string; }; export async function POST(request: NextRequest) { const middlewareResponse = await middleware(request); if (middlewareResponse) return middlewareResponse; try { const { username, email, passwordHash, name, pfpURL = "", pushToken = "" } = await request.json() as CreateUserRequest; // Validate required fields if (!username || !email || !passwordHash || !name) { return NextResponse.json( { message: "Missing required fields" }, { status: 400 } ); } const user = await createUser( username, email, passwordHash, name, pfpURL, pushToken ); return NextResponse.json(user, { status: 201 }); } catch (error) { console.error("Error creating user:", error); if (error instanceof Error) { return NextResponse.json({ message: error.message }, { status: 400 }); } return NextResponse.json( { message: "An unexpected error occurred" }, { status: 500 } ); } }