import { db } from "../../db/postgre.js";
import { DriveFolders, DriveFiles } from "../index.js";
import { DriveFolder } from "../entities/drive-folder.js";
import { awaitAll } from "../../prelude/await-all.js";
export const DriveFolderRepository = db.getRepository(DriveFolder).extend({
    async pack (src, options) {
        const opts = Object.assign({
            detail: false
        }, options);
        const folder = typeof src === "object" ? src : await this.findOneByOrFail({
            id: src
        });
        return await awaitAll({
            id: folder.id,
            createdAt: folder.createdAt.toISOString(),
            name: folder.name,
            parentId: folder.parentId,
            ...opts.detail ? {
                foldersCount: DriveFolders.countBy({
                    parentId: folder.id
                }),
                filesCount: DriveFiles.countBy({
                    folderId: folder.id
                }),
                ...folder.parentId ? {
                    parent: this.pack(folder.parentId, {
                        detail: true
                    })
                } : {}
            } : {}
        });
    }
});
