2024-11-24 22:45:41 +01:00
|
|
|
import { Args } from "@oclif/core";
|
|
|
|
|
import { Instance } from "@versia/kit/db";
|
2024-11-24 22:48:34 +01:00
|
|
|
import { Instances } from "@versia/kit/tables";
|
|
|
|
|
import { eq } from "drizzle-orm";
|
2024-11-24 22:45:41 +01:00
|
|
|
import ora from "ora";
|
2024-11-25 21:54:31 +01:00
|
|
|
import { FetchJobType, fetchQueue } from "~/classes/queues/fetch";
|
2024-11-24 22:45:41 +01:00
|
|
|
import { BaseCommand } from "~/cli/base";
|
|
|
|
|
|
|
|
|
|
export default class FederationInstanceRefetch extends BaseCommand<
|
|
|
|
|
typeof FederationInstanceRefetch
|
|
|
|
|
> {
|
|
|
|
|
public static override args = {
|
|
|
|
|
url: Args.string({
|
|
|
|
|
description: "URL of the remote instance",
|
|
|
|
|
required: true,
|
|
|
|
|
}),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public static override description =
|
|
|
|
|
"Refetches metadata from remote instances";
|
|
|
|
|
|
|
|
|
|
public static override examples = ["<%= config.bin %> <%= command.id %>"];
|
|
|
|
|
|
|
|
|
|
public static override flags = {};
|
|
|
|
|
|
|
|
|
|
public async run(): Promise<void> {
|
|
|
|
|
const { args } = await this.parse(FederationInstanceRefetch);
|
|
|
|
|
|
|
|
|
|
const spinner = ora("Refetching instance metadata").start();
|
|
|
|
|
|
2024-11-24 22:48:34 +01:00
|
|
|
const host = new URL(args.url).host;
|
|
|
|
|
|
|
|
|
|
const instance = await Instance.fromSql(eq(Instances.baseUrl, host));
|
|
|
|
|
|
|
|
|
|
if (!instance) {
|
|
|
|
|
throw new Error("Instance not found");
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-25 20:29:59 +01:00
|
|
|
await fetchQueue.add(FetchJobType.Instance, {
|
|
|
|
|
uri: args.url,
|
|
|
|
|
});
|
2024-11-24 22:45:41 +01:00
|
|
|
|
2024-11-25 20:29:59 +01:00
|
|
|
spinner.succeed("Task added to queue");
|
2024-11-24 22:45:41 +01:00
|
|
|
|
|
|
|
|
this.exit(0);
|
|
|
|
|
}
|
|
|
|
|
}
|