Files
stats/apps/web/src/pages/api/sdk/profiles/[profileId]/index.ts
2023-10-12 23:19:02 +02:00

49 lines
1.3 KiB
TypeScript

import { validateSdkRequest } from "@/server/auth";
import { db } from "@/server/db";
import { createError, handleError } from "@/server/exceptions";
import { getProfile } from "@/services/profile.service";
import { ProfilePayload } from "@mixan/types";
import type { NextApiRequest, NextApiResponse } from "next";
interface Request extends NextApiRequest {
body: ProfilePayload;
}
export default async function handler(req: Request, res: NextApiResponse) {
if (req.method !== "PUT" && req.method !== "POST") {
return handleError(res, createError(405, "Method not allowed"));
}
try {
// Check client id & secret
await validateSdkRequest(req)
const profileId = req.query.profileId as string;
const profile = await getProfile(profileId)
const { body } = req;
await db.profile.update({
where: {
id: profileId,
},
data: {
external_id: body.id,
email: body.email,
first_name: body.first_name,
last_name: body.last_name,
avatar: body.avatar,
properties: {
...(typeof profile.properties === "object"
? profile.properties || {}
: {}),
...(body.properties || {}),
},
},
});
res.status(200).end();
} catch (error) {
handleError(res, error);
}
}