feat: Auto add new users and statuses to Meilisearch

This commit is contained in:
Jesse Wierzbinski 2023-12-02 18:45:01 -10:00
parent 553b558c1a
commit b5913b163c
No known key found for this signature in database
3 changed files with 38 additions and 1 deletions

View file

@ -28,6 +28,7 @@ import { sanitizeHtml } from "@sanitization";
import { parse } from "marked";
import linkifyStr from "linkify-string";
import linkifyHtml from "linkify-html";
import { addStausToMeilisearch } from "@meilisearch";
const config = getConfig();
@ -415,7 +416,6 @@ export const createNewStatus = async (data: {
});
// Create notification
if (status.inReplyToPost) {
await client.notification.create({
data: {
@ -427,6 +427,9 @@ export const createNewStatus = async (data: {
});
}
// Add to search index
await addStausToMeilisearch(status);
return status;
};

View file

@ -9,6 +9,7 @@ import { client } from "~database/datasource";
import { addEmojiIfNotExists, emojiToAPI, emojiToLysand } from "./Emoji";
import { addInstanceIfNotExists } from "./Instance";
import type { APISource } from "~types/entities/source";
import { addUserToMeilisearch } from "@meilisearch";
export interface AuthData {
user: UserWithRelations | null;
@ -151,6 +152,9 @@ export const fetchRemoteUser = async (uri: string) => {
},
});
// Add to Meilisearch
await addUserToMeilisearch(user);
const emojis = [];
for (const emoji of userEmojis) {
@ -224,6 +228,9 @@ export const createNewLocalUser = async (data: {
},
});
// Add to Meilisearch
await addUserToMeilisearch(user);
return await client.user.update({
where: {
id: user.id,

View file

@ -2,6 +2,7 @@ import { getConfig } from "@config";
import chalk from "chalk";
import { client } from "~database/datasource";
import { Meilisearch } from "meilisearch";
import type { Status, User } from "@prisma/client";
const config = getConfig();
@ -48,6 +49,32 @@ export enum MeiliIndexType {
Statuses = "statuses",
}
export const addStausToMeilisearch = async (status: Status) => {
if (!config.meilisearch.enabled) return;
await meilisearch.index(MeiliIndexType.Statuses).addDocuments([
{
id: status.id,
content: status.content,
createdAt: status.createdAt,
},
]);
};
export const addUserToMeilisearch = async (user: User) => {
if (!config.meilisearch.enabled) return;
await meilisearch.index(MeiliIndexType.Accounts).addDocuments([
{
id: user.id,
username: user.username,
displayName: user.displayName,
note: user.note,
createdAt: user.createdAt,
},
]);
};
export const getNthDatabaseAccountBatch = (
n: number,
batchSize = 1000