import { Inject, Controller, Delete, Get, Param, Query, Req } from "@nestjs/common"; import type { Request } from "express"; import { SessionsService } from "./sessions.service.js"; import { requireUser } from "../../common/types.js"; import { z } from "zod"; import { ZodValidate } from "../../common/pipes/zod-validation.pipe.js"; const ListQuery = z.object({ cursor: z.string().optional(), limit: z.string().optional() }); @Controller("sessions") export class SessionsController { constructor(@Inject(SessionsService) private readonly sessions: SessionsService) {} @Get() list(@Query(ZodValidate(ListQuery)) query: z.infer, @Req() req: Request) { return this.sessions.list(requireUser(req), query); } @Delete(":id") revoke(@Param("id") id: string, @Req() req: Request) { return this.sessions.revoke(requireUser(req), id, { req }); } @Delete() revokeAll(@Req() req: Request) { return this.sessions.revokeAll(requireUser(req)); } }