Refactor to vertical slice
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import {
|
||||
getCurrentComplex,
|
||||
selectComplex,
|
||||
} from '@/modules/complex/features/get-current-complex/get-current-complex.business';
|
||||
import type { AppContext } from '@/types/hono';
|
||||
import { setCookie } from 'hono/cookie';
|
||||
import { z } from 'zod';
|
||||
|
||||
const SELECTED_COMPLEX_COOKIE = 'selected-complex-id';
|
||||
const COOKIE_MAX_AGE = 60 * 60 * 24 * 30;
|
||||
|
||||
const selectComplexSchema = z.object({
|
||||
complexId: z.string().uuid(),
|
||||
});
|
||||
|
||||
export async function selectComplexHandler(c: AppContext) {
|
||||
const user = c.get('user');
|
||||
const body = await c.req.json();
|
||||
const result = selectComplexSchema.safeParse(body);
|
||||
|
||||
if (!result.success) {
|
||||
return c.json({ message: 'Invalid payload', issues: result.error.issues }, { status: 400 });
|
||||
}
|
||||
|
||||
const { complexId } = result.data;
|
||||
const complex = await selectComplex(user.id, complexId);
|
||||
|
||||
if (!complex) {
|
||||
return c.json({ message: 'Complex not found or not associated with user' }, { status: 404 });
|
||||
}
|
||||
|
||||
setCookie(c, SELECTED_COMPLEX_COOKIE, complexId, {
|
||||
httpOnly: true,
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
sameSite: 'strict',
|
||||
path: '/',
|
||||
maxAge: COOKIE_MAX_AGE,
|
||||
});
|
||||
|
||||
return c.json(complex);
|
||||
}
|
||||
Reference in New Issue
Block a user