mirror of
https://github.com/nestriness/nestri.git
synced 2026-08-02 01:35:18 +03:00
feat: How to create a session
This commit is contained in:
@@ -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);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user