fix(cli): 🐛 Don't federate changes to remote users, initialize search indexer on all CLI commands

This commit is contained in:
Jesse Wierzbinski 2024-06-29 22:55:50 -10:00
parent 49a2552e96
commit 57b295ccf2
No known key found for this signature in database
5 changed files with 29 additions and 20 deletions

View file

@ -49,18 +49,19 @@ export class SonicSearchManager {
/**
* Connect to Sonic
*/
async connect(): Promise<void> {
async connect(silent = false): Promise<void> {
if (!this.config.sonic.enabled) {
this.logger.info`Sonic search is disabled`;
!silent && this.logger.info`Sonic search is disabled`;
return;
}
this.logger.info`Connecting to Sonic...`;
!silent && this.logger.info`Connecting to Sonic...`;
// Connect to Sonic
await new Promise<boolean>((resolve, reject) => {
this.searchChannel.connect({
connected: () => {
!silent &&
this.logger.info`Connected to Sonic Search Channel`;
resolve(true);
},
@ -84,6 +85,7 @@ export class SonicSearchManager {
await new Promise<boolean>((resolve, reject) => {
this.ingestChannel.connect({
connected: () => {
!silent &&
this.logger.info`Connected to Sonic Ingest Channel`;
resolve(true);
},
@ -108,7 +110,7 @@ export class SonicSearchManager {
this.searchChannel.ping(),
this.ingestChannel.ping(),
]);
this.logger.info`Connected to Sonic`;
!silent && this.logger.info`Connected to Sonic`;
} catch (error) {
this.logger.fatal`Error while connecting to Sonic: ${error}`;
throw error;

View file

@ -1,4 +1,5 @@
import { Command } from "@oclif/core";
import { searchManager } from "~/classes/search/search-manager";
import { setupDatabase } from "~/drizzle/db";
export abstract class BaseCommand<_T extends typeof Command> extends Command {
@ -6,5 +7,6 @@ export abstract class BaseCommand<_T extends typeof Command> extends Command {
await super.init();
await setupDatabase(false);
await searchManager.connect(true);
}
}

View file

@ -33,8 +33,6 @@ export default class IndexRebuild extends BaseCommand<typeof IndexRebuild> {
this.exit(1);
}
await searchManager.connect();
const spinner = ora("Rebuilding search indexes").start();
switch (args.type) {

View file

@ -1,6 +1,7 @@
import confirm from "@inquirer/confirm";
import { Flags } from "@oclif/core";
import chalk from "chalk";
import ora from "ora";
import { UserFinderCommand } from "~/cli/classes";
import { formatArray } from "~/cli/utils/format";
@ -78,8 +79,11 @@ export default class UserRefetch extends UserFinderCommand<typeof UserRefetch> {
}
}
const spinner = ora("Refetching users").start();
for (const user of users) {
try {
spinner.text = `Refetching user ${user.data.username}`;
await user.updateFromRemote();
} catch (error) {
this.log(
@ -93,6 +97,8 @@ export default class UserRefetch extends UserFinderCommand<typeof UserRefetch> {
}
}
spinner.succeed("Refetched users");
this.exit(0);
}
}

View file

@ -576,7 +576,8 @@ export class User extends BaseInterface<typeof Users, UserWithRelations> {
// If something important is updated, federate it
if (
newUser.username ||
this.isLocal() &&
(newUser.username ||
newUser.displayName ||
newUser.note ||
newUser.avatar ||
@ -587,7 +588,7 @@ export class User extends BaseInterface<typeof Users, UserWithRelations> {
newUser.isBot ||
newUser.isLocked ||
newUser.endpoints ||
newUser.isDiscoverable
newUser.isDiscoverable)
) {
await this.federateToFollowers(this.toLysand());
}