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
        })));
});
