feat(api): add react-query client generation and redesign api responses

This commit is contained in:
Dominik 2025-06-12 19:47:05 +02:00
parent 6c9569ae40
commit 3a0ce64c00
Signed by: dominik
GPG key ID: 06A4003FC5049644
12 changed files with 2026 additions and 119 deletions

View file

@ -20,7 +20,13 @@ import { prisma } from '@/prisma';
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/PublicUser'
* type: 'object'
* properties:
* success:
* type: 'boolean'
* default: true
* user:
* $ref: '#/components/schemas/PublicUser'
* 401:
* description: User is not authenticated.
* content:
@ -29,7 +35,8 @@ import { prisma } from '@/prisma';
* $ref: '#/components/schemas/ErrorResponse'
* example:
* {
* message: 'Not authenticated'
* success: false,
* message: 'Not authenticated',
* }
* 404:
* description: User not found.
@ -39,34 +46,44 @@ import { prisma } from '@/prisma';
* $ref: '#/components/schemas/ErrorResponse'
* example:
* {
* success: false,
* message: 'User not found'
* }
*/
*/
export const GET = auth(async function GET(req, { params }) {
if (!req.auth)
return NextResponse.json({ message: 'Not authenticated' }, { status: 401 });
return NextResponse.json(
{ success: false, message: 'Not authenticated' },
{ status: 401 },
);
if (!req.auth.user || !req.auth.user.id)
return NextResponse.json({ message: 'User not found' }, { status: 404 });
return NextResponse.json(
{ success: false, message: 'User not found' },
{ status: 404 },
);
const requestedUser = (await params).user;
const dbUser = await prisma.user.findFirst({
where: {
OR: [
{ id: requestedUser },
{ name: requestedUser },
],
OR: [{ id: requestedUser }, { name: requestedUser }],
},
});
if (!dbUser)
return NextResponse.json({ message: 'User not found' }, { status: 404 });
return NextResponse.json(
{ success: false, message: 'User not found' },
{ status: 404 },
);
return NextResponse.json({
id: dbUser.id,
name: dbUser.name,
first_name: dbUser.first_name,
last_name: dbUser.last_name,
timezone: dbUser.timezone,
image: dbUser.image,
success: true,
user: {
id: dbUser.id,
name: dbUser.name,
first_name: dbUser.first_name,
last_name: dbUser.last_name,
timezone: dbUser.timezone,
image: dbUser.image,
},
});
});