import { db } from "../../db/postgre.js";
import { App } from "../entities/app.js";
import { AccessTokens } from "../index.js";
export const AppRepository = db.getRepository(App).extend({
    async pack (src, me, options) {
        const opts = Object.assign({
            detail: false,
            includeSecret: false,
            includeProfileImageIds: false
        }, options);
        const app = typeof src === "object" ? src : await this.findOneByOrFail({
            id: src
        });
        return {
            id: app.id,
            name: app.name,
            callbackUrl: app.callbackUrl,
            permission: app.permission,
            ...opts.includeSecret ? {
                secret: app.secret
            } : {},
            ...me ? {
                isAuthorized: await AccessTokens.countBy({
                    appId: app.id,
                    userId: me.id
                }).then((count)=>count > 0)
            } : {}
        };
    }
});
