feat: How to create a session

This commit is contained in:
Wanjohi
2025-11-04 00:09:31 +03:00
parent 6947230a1d
commit 86959f93d9
4 changed files with 104 additions and 27 deletions

View File

@@ -2,33 +2,66 @@ import { Hono } from "hono";
import { notPublic } from "../utils/auth.js";
import { ErrorResponses } from "../utils/error.js";
import { Session } from "@nestri/core/session/index";
import { describeRoute, resolver } from "hono-openapi";
import { describeRoute, resolver, validator } from "hono-openapi";
export namespace SessionRoute {
export const route = new Hono().use(notPublic).get(
"/",
describeRoute({
tags: ["Session"],
operationId: "session.list",
summary: "List all active sessions",
description: "List all the current user's active sessions",
responses: {
200: {
description: "List of sessions",
content: {
"application/json": {
schema: resolver(Session.Info.array()),
export const route = new Hono()
.use(notPublic)
.get(
"/",
describeRoute({
tags: ["Session"],
operationId: "session.list",
summary: "List all sessions",
description: "List all the current user's sessions",
responses: {
200: {
description: "List of sessions",
content: {
"application/json": {
schema: resolver(Session.Info.array()),
},
},
},
401: ErrorResponses[401],
403: ErrorResponses[403],
429: ErrorResponses[429],
},
401: ErrorResponses[401],
403: ErrorResponses[403],
429: ErrorResponses[429],
}),
async (c) => {
const sessions = await Session.list();
return c.json(sessions);
},
}),
async (c) => {
const sessions = await Session.list();
return c.json(sessions);
},
);
)
.post(
"/",
describeRoute({
tags: ["Session"],
operationId: "session.create",
summary: "Create a new session",
description: "Create a new session for the current user",
responses: {
201: {
description: "The created session",
content: {
"application/json": {
schema: resolver(Session.Info),
},
},
},
400: ErrorResponses[400],
401: ErrorResponses[401],
403: ErrorResponses[403],
429: ErrorResponses[429],
},
}),
validator("json", Session.Info.omit({ id: true })),
async (c) => {
const sessionData = c.req.valid("json");
const id = await Session.create(sessionData);
return c.json({ ...sessionData, id }, 201);
},
);
}