mirror of
https://github.com/vee1e/workorder-desk.git
synced 2026-09-01 09:50:13 +00:00
feat(backend): wire PATCH /admin/users/:id/ai endpoint for the AI opt-out toggle
This commit is contained in:
parent
93e828bcb1
commit
14d978289f
2 changed files with 12 additions and 2 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
Loading…
Add table
Add a link
Reference in a new issue