feat(backend): wire PATCH /admin/users/:id/ai endpoint for the AI opt-out toggle

This commit is contained in:
lakshit verma 2026-08-19 19:24:55 +05:30
parent 93e828bcb1
commit 14d978289f
No known key found for this signature in database
2 changed files with 12 additions and 2 deletions

View file

@ -1,5 +1,5 @@
import type { NextFunction, Request, Response } from 'express';
import type { CursorQuery, OffsetQuery, UpdateRoleInput, UpdateStatusInput } from '@workorders/shared';
import type { CursorQuery, OffsetQuery, UpdateAiInput, UpdateRoleInput, UpdateStatusInput } from '@workorders/shared';
import { adminService, type UserListQuery } from '../services/admin.service.js';
import { actorOf, paramOf } from '../utils/request.js';
@ -32,6 +32,15 @@ export const adminController = {
}
},
async updateAi(req: Request, res: Response, next: NextFunction): Promise<void> {
try {
const data = await adminService.updateAiEnabled(actorOf(req).id, paramOf(req, 'id'), (req.body as UpdateAiInput).aiEnabled);
res.status(200).json({ success: true, data });
} catch (err) {
next(err);
}
},
async listWorkOrders(req: Request, res: Response, next: NextFunction): Promise<void> {
try {
const data = await adminService.listWorkOrders(req.query as unknown as CursorQuery);

View file

@ -1,5 +1,5 @@
import { Router } from 'express';
import { cursorQuerySchema, offsetQuerySchema, updateRoleSchema, updateStatusSchema } from '@workorders/shared';
import { cursorQuerySchema, offsetQuerySchema, updateAiSchema, updateRoleSchema, updateStatusSchema } from '@workorders/shared';
import { adminController } from '../controllers/admin.controller.js';
import { authenticate, requireAdmin, requireAdminOrViewer } from '../middleware/auth.middleware.js';
import { validate, validateQuery } from '../middleware/validate.middleware.js';
@ -15,4 +15,5 @@ adminRoutes.use(requireAdmin);
adminRoutes.get('/users', validateQuery(offsetQuerySchema), adminController.listUsers);
adminRoutes.patch('/users/:id/role', validate(updateRoleSchema), adminController.updateRole);
adminRoutes.patch('/users/:id/status', validate(updateStatusSchema), adminController.updateStatus);
adminRoutes.patch('/users/:id/ai', validate(updateAiSchema), adminController.updateAi);
adminRoutes.get('/metrics', adminController.metrics);