import { Instances } from "../models/index.js";
import { genId } from "../misc/gen-id.js";
import { toPuny } from "../misc/convert-host.js";
import { Cache } from "../misc/cache.js";
const cache = new Cache("registerOrFetchInstanceDoc", 60 * 60);
export async function registerOrFetchInstanceDoc(host) {
    const _host = toPuny(host);
    const cached = await cache.get(_host);
    if (cached) return cached;
    const index = await Instances.findOneBy({
        host: _host
    });
    if (index == null) {
        const i = await Instances.insert({
            id: genId(),
            host: _host,
            caughtAt: new Date(),
            lastCommunicatedAt: new Date()
        }).then((x)=>Instances.findOneByOrFail(x.identifiers[0]));
        await cache.set(_host, i);
        return i;
    } else {
        await cache.set(_host, index);
        return index;
    }
}
