mirror of
https://github.com/versia-pub/server.git
synced 2026-01-26 04:06:01 +01:00
Some checks failed
CodeQL Scan / Analyze (javascript-typescript) (push) Failing after 0s
Build Docker Images / lint (push) Failing after 7s
Build Docker Images / check (push) Failing after 6s
Build Docker Images / tests (push) Failing after 7s
Build Docker Images / detect-circular (push) Failing after 7s
Deploy Docs to GitHub Pages / build (push) Failing after 0s
Build Docker Images / build (server, Dockerfile, ${{ github.repository_owner }}/server) (push) Has been skipped
Build Docker Images / build (worker, Worker.Dockerfile, ${{ github.repository_owner }}/worker) (push) Has been skipped
Deploy Docs to GitHub Pages / Deploy (push) Has been skipped
Mirror to Codeberg / Mirror (push) Failing after 0s
Nix Build / check (push) Failing after 0s
Test Publish / build (client) (push) Failing after 0s
Test Publish / build (sdk) (push) Failing after 0s
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
import { defineCommand } from "@clerc/core";
|
|
import { config } from "@versia-server/config";
|
|
import { SonicIndexType, searchManager } from "@versia-server/kit/search";
|
|
import ora from "ora";
|
|
|
|
export const rebuildIndexCommand = defineCommand(
|
|
{
|
|
name: "index rebuild",
|
|
description: "Rebuild the search index.",
|
|
parameters: ["<type>"],
|
|
flags: {
|
|
"batch-size": {
|
|
description: "Number of records to process at once",
|
|
type: Number,
|
|
alias: "b",
|
|
default: 100,
|
|
},
|
|
},
|
|
},
|
|
async (context) => {
|
|
const { "batch-size": batchSize } = context.flags;
|
|
const { type } = context.parameters;
|
|
|
|
if (!config.search.enabled) {
|
|
throw new Error(
|
|
"Search is not enabled in the instance configuration.",
|
|
);
|
|
}
|
|
|
|
const spinner = ora("Rebuilding search indexes").start();
|
|
|
|
switch (type) {
|
|
case "accounts":
|
|
await searchManager.rebuildSearchIndexes(
|
|
[SonicIndexType.Accounts],
|
|
batchSize,
|
|
(progress) => {
|
|
spinner.text = `Rebuilding search indexes (${(progress * 100).toFixed(2)}%)`;
|
|
},
|
|
);
|
|
break;
|
|
case "statuses":
|
|
await searchManager.rebuildSearchIndexes(
|
|
[SonicIndexType.Statuses],
|
|
batchSize,
|
|
(progress) => {
|
|
spinner.text = `Rebuilding search indexes (${(progress * 100).toFixed(2)}%)`;
|
|
},
|
|
);
|
|
break;
|
|
default: {
|
|
throw new Error(
|
|
"Invalid index type. Can be 'accounts' or 'statuses'.",
|
|
);
|
|
}
|
|
}
|
|
|
|
spinner.succeed("Search indexes rebuilt");
|
|
},
|
|
);
|