import { db } from "../../db/postgre.js";
import { Users } from "../index.js";
import { Following } from "../entities/following.js";
import { awaitAll } from "../../prelude/await-all.js";
export const FollowingRepository = db.getRepository(Following).extend({
    isLocalFollower (following) {
        return following.followerHost == null;
    },
    isRemoteFollower (following) {
        return following.followerHost != null;
    },
    isLocalFollowee (following) {
        return following.followeeHost == null;
    },
    isRemoteFollowee (following) {
        return following.followeeHost != null;
    },
    async pack (src, me, opts) {
        const following = typeof src === "object" ? src : await this.findOneByOrFail({
            id: src
        });
        if (opts == null) opts = {};
        return await awaitAll({
            id: following.id,
            createdAt: following.createdAt.toISOString(),
            followeeId: following.followeeId,
            followerId: following.followerId,
            followee: opts.populateFollowee ? Users.pack(following.followee || following.followeeId, me, {
                detail: true
            }) : undefined,
            follower: opts.populateFollower ? Users.pack(following.follower || following.followerId, me, {
                detail: true
            }) : undefined
        });
    },
    packMany (followings, me, opts) {
        return Promise.all(followings.map((x)=>this.pack(x, me, opts)));
    }
});
