import { db } from "../../db/postgre.js";
import { Instance } from "../entities/instance.js";
import { shouldBlockInstance, shouldSilenceInstance } from "../../misc/should-block-instance.js";
export const InstanceRepository = db.getRepository(Instance).extend({
    async pack (instance, privileged = true) {
        return {
            id: instance.id,
            caughtAt: instance.caughtAt.toISOString(),
            host: instance.host,
            usersCount: instance.usersCount,
            notesCount: instance.notesCount,
            followingCount: instance.followingCount,
            followersCount: instance.followersCount,
            latestRequestSentAt: instance.latestRequestSentAt ? instance.latestRequestSentAt.toISOString() : null,
            lastCommunicatedAt: instance.lastCommunicatedAt.toISOString(),
            isNotResponding: instance.isNotResponding,
            isSuspended: privileged ? instance.isSuspended : false,
            isBlocked: privileged ? await shouldBlockInstance(instance.host) : false,
            isSilenced: privileged ? await shouldSilenceInstance(instance.host) : false,
            softwareName: instance.softwareName,
            softwareVersion: instance.softwareVersion,
            openRegistrations: instance.openRegistrations,
            name: instance.name,
            description: instance.description,
            maintainerName: instance.maintainerName,
            maintainerEmail: instance.maintainerEmail,
            iconUrl: instance.iconUrl,
            faviconUrl: instance.faviconUrl,
            themeColor: instance.themeColor,
            infoUpdatedAt: instance.infoUpdatedAt ? instance.infoUpdatedAt.toISOString() : null
        };
    },
    packMany (instances, privileged = true) {
        return Promise.all(instances.map((x)=>this.pack(x, privileged)));
    }
});
