renewFacts

tcmts.registry.renewFacts · #zvcyaeg4 · term · runs on the server

uses tcmts.registry.registryCodebase, which uses node:fs

Work out again the facts of mirrored releases whose facts are older than what the registry keeps now (no effects): each once, against the version they were compared with. How many it did.

import { registryCodebase, releaseFacts, releases, shownRelease } from "#codebase/tcmts/registry";

export async function renewFacts(): Promise<number> {
  const cb = registryCodebase();
  const old = (await releases.find()).filter(
    (r) => r.value.facts && !r.value.facts.effects && r.value.mount && shownRelease(r.value),
  );
  for (const { id, value: r } of old) {
    const after = r.facts!.after;
    const before =
      after === undefined
        ? undefined
        : (await releases.find({ did: r.did, package: r.package })).find(
            (x) => x.value.version === after,
          )?.value;
    const facts = releaseFacts(
      cb,
      cb.store.namespaceRows(r.namespace),
      before && { version: before.version, rows: cb.store.namespaceRows(before.namespace) },
    );
    await releases.update(id, (v) => ({ ...v, facts }));
  }
  return old.length;
}

uses

used by