From 34370a082afec9b9d237705f3061b8b4292536fb Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Sun, 24 Nov 2024 22:48:34 +0100 Subject: [PATCH] refactor(federation): :recycle: Make Instance updateFromRemote non-static --- classes/database/instance.ts | 19 +++++++------------ cli/commands/federation/instance/refetch.ts | 12 +++++++++++- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/classes/database/instance.ts b/classes/database/instance.ts index 0f963f46..62bba1ab 100644 --- a/classes/database/instance.ts +++ b/classes/database/instance.ts @@ -362,26 +362,21 @@ export class Instance extends BaseInterface { }); } - public static async updateFromRemote(url: string): Promise { + public async updateFromRemote(): Promise { const logger = getLogger("federation"); - const host = new URL(url).host; - const instance = await Instance.fromSql(eq(Instances.baseUrl, host)); - - if (!instance) { - throw new Error("Instance not found"); - } - - const output = await Instance.fetchMetadata(url); + const output = await Instance.fetchMetadata( + `https://${this.data.baseUrl}`, + ); if (!output) { - logger.error`Failed to update instance ${chalk.bold(host)}`; + logger.error`Failed to update instance ${chalk.bold(this.data.baseUrl)}`; throw new Error("Failed to update instance"); } const { metadata, protocol } = output; - await instance.update({ + await this.update({ name: metadata.name, version: metadata.software.version, logo: metadata.logo, @@ -389,7 +384,7 @@ export class Instance extends BaseInterface { publicKey: metadata.public_key, }); - return instance; + return this; } public static getCount(): Promise { diff --git a/cli/commands/federation/instance/refetch.ts b/cli/commands/federation/instance/refetch.ts index ecea7f7c..7b74fe1d 100644 --- a/cli/commands/federation/instance/refetch.ts +++ b/cli/commands/federation/instance/refetch.ts @@ -1,5 +1,7 @@ import { Args } from "@oclif/core"; import { Instance } from "@versia/kit/db"; +import { Instances } from "@versia/kit/tables"; +import { eq } from "drizzle-orm"; import ora from "ora"; import { BaseCommand } from "~/cli/base"; import { formatArray } from "~/cli/utils/format"; @@ -26,7 +28,15 @@ export default class FederationInstanceRefetch extends BaseCommand< const spinner = ora("Refetching instance metadata").start(); - const data = await Instance.updateFromRemote(args.url); + const host = new URL(args.url).host; + + const instance = await Instance.fromSql(eq(Instances.baseUrl, host)); + + if (!instance) { + throw new Error("Instance not found"); + } + + const data = await instance.updateFromRemote(); if (!data) { spinner.fail("Failed to refetch instance metadata");