import { changelog, db } from '@boring.tools/database' import { AccessTokenListOutput } from '@boring.tools/schema' import { createRoute } from '@hono/zod-openapi' import { desc, eq } from 'drizzle-orm' import { HTTPException } from 'hono/http-exception' import type { accessTokenApi } from '.' import { verifyAuthentication } from '../utils/authentication' import { openApiErrorResponses, openApiSecurity } from '../utils/openapi' const route = createRoute({ method: 'get', path: '/', tags: ['access-token'], responses: { 200: { content: { 'application/json': { schema: AccessTokenListOutput, }, }, description: 'Return version by id', }, ...openApiErrorResponses, }, ...openApiSecurity, }) export const registerAccessTokenList = (api: typeof accessTokenApi) => { return api.openapi(route, async (c) => { const userId = await verifyAuthentication(c) const result = await db.query.access_token.findMany({ where: eq(changelog.userId, userId), orderBy: () => desc(changelog.createdAt), }) if (!result) { throw new HTTPException(404, { message: 'Access Tokens not found' }) } const mappedData = result.map((at) => ({ ...at, token: at.token.substring(0, 10), })) return c.json(AccessTokenListOutput.parse(mappedData), 200) }) }