import { validate } from '@/lib/http/validate'; import { requireAuth } from '@/middlewares/require-auth.middleware'; import { requireSuperAdmin } from '@/middlewares/require-super-admin.middleware'; import { blockUserHandler } from '@/modules/admin/features/block-user/block-user.handler'; import { createPlanHandler } from '@/modules/admin/features/create-plan/create-plan.handler'; import { deletePlanHandler } from '@/modules/admin/features/delete-plan/delete-plan.handler'; import { getGeoStatsHandler } from '@/modules/admin/features/get-geo-stats/get-geo-stats.handler'; import { getUserSessionsHandler } from '@/modules/admin/features/get-user-sessions/get-user-sessions.handler'; import { listComplexesHandler } from '@/modules/admin/features/list-complexes/list-complexes.handler'; import { listPlansAdminHandler } from '@/modules/admin/features/list-plans-admin/list-plans-admin.handler'; import { listUsersHandler } from '@/modules/admin/features/list-users/list-users.handler'; import { revokeAllSessionsHandler } from '@/modules/admin/features/revoke-all-sessions/revoke-all-sessions.handler'; import { unblockUserHandler } from '@/modules/admin/features/unblock-user/unblock-user.handler'; import { updatePlanHandler } from '@/modules/admin/features/update-plan/update-plan.handler'; import type { AppEnv } from '@/types/hono'; import { adminBlockUserSchema, adminCreatePlanSchema, adminUpdatePlanSchema, } from '@repo/api-contract'; import { Hono } from 'hono'; import { z } from 'zod'; export const adminRoutes = new Hono(); adminRoutes.use('*', requireAuth, requireSuperAdmin); adminRoutes.get('/complexes', listComplexesHandler); adminRoutes.get('/plans', listPlansAdminHandler); adminRoutes.post('/plans', validate.json(adminCreatePlanSchema), createPlanHandler); adminRoutes.patch( '/plans/:code', validate.param(z.object({ code: z.string().min(1).max(10) })), validate.json(adminUpdatePlanSchema), updatePlanHandler ); adminRoutes.delete( '/plans/:code', validate.param(z.object({ code: z.string().min(1).max(10) })), deletePlanHandler ); adminRoutes.get('/geo-stats', getGeoStatsHandler); adminRoutes.get('/users', listUsersHandler); adminRoutes.post( '/users/:id/block', validate.param(z.object({ id: z.string().min(1) })), validate.json(adminBlockUserSchema), blockUserHandler ); adminRoutes.post( '/users/:id/unblock', validate.param(z.object({ id: z.string().min(1) })), unblockUserHandler ); adminRoutes.get( '/users/:id/sessions', validate.param(z.object({ id: z.string().min(1) })), getUserSessionsHandler ); adminRoutes.post( '/users/:id/sessions/revoke-all', validate.param(z.object({ id: z.string().min(1) })), revokeAllSessionsHandler );