hippofish/packages/backend/src/server/api/endpoints/i/apps.ts
ThatOneCalculator abf47e54f3
clean up w/ rome
2023-01-16 11:19:20 -08:00

56 lines
1.1 KiB
TypeScript

import define from "../../define.js";
import { AccessTokens } from "@/models/index.js";
export const meta = {
requireCredential: true,
secure: true,
} as const;
export const paramDef = {
type: "object",
properties: {
sort: {
type: "string",
enum: ["+createdAt", "-createdAt", "+lastUsedAt", "-lastUsedAt"],
},
},
required: [],
} as const;
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,
})),
);
});