mirror of
https://github.com/versia-pub/server.git
synced 2025-12-07 16:58:20 +01:00
feat: Auto add new users and statuses to Meilisearch
This commit is contained in:
parent
553b558c1a
commit
b5913b163c
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue