import define from "../../define.js"; import { AccessTokens } from "../../../../models/index.js"; export const meta = { requireCredential: true, secure: true }; export const paramDef = { type: "object", properties: { sort: { type: "string", enum: [ "+createdAt", "-createdAt", "+lastUsedAt", "-lastUsedAt" ] } }, required: [] }; export default define(meta, paramDef, async (ps, user)=>{ const query = AccessTokens.createQueryBuilder("token").where("token.userId = :userId", { userId: user.id }); switch(ps.sort){ case "+createdAt": query.orderBy("token.createdAt", "DESC"); break; case "-createdAt": query.orderBy("token.createdAt", "ASC"); break; case "+lastUsedAt": query.orderBy("token.lastUsedAt", "DESC"); break; case "-lastUsedAt": query.orderBy("token.lastUsedAt", "ASC"); break; default: query.orderBy("token.id", "ASC"); break; } const tokens = await query.getMany(); return await Promise.all(tokens.map((token)=>({ id: token.id, name: token.name, createdAt: token.createdAt, lastUsedAt: token.lastUsedAt, permission: token.permission }))); });