mirror of
https://github.com/versia-pub/server.git
synced 2025-12-08 01:08:19 +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 { parse } from "marked";
|
||||||
import linkifyStr from "linkify-string";
|
import linkifyStr from "linkify-string";
|
||||||
import linkifyHtml from "linkify-html";
|
import linkifyHtml from "linkify-html";
|
||||||
|
import { addStausToMeilisearch } from "@meilisearch";
|
||||||
|
|
||||||
const config = getConfig();
|
const config = getConfig();
|
||||||
|
|
||||||
|
|
@ -415,7 +416,6 @@ export const createNewStatus = async (data: {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create notification
|
// Create notification
|
||||||
|
|
||||||
if (status.inReplyToPost) {
|
if (status.inReplyToPost) {
|
||||||
await client.notification.create({
|
await client.notification.create({
|
||||||
data: {
|
data: {
|
||||||
|
|
@ -427,6 +427,9 @@ export const createNewStatus = async (data: {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add to search index
|
||||||
|
await addStausToMeilisearch(status);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import { client } from "~database/datasource";
|
||||||
import { addEmojiIfNotExists, emojiToAPI, emojiToLysand } from "./Emoji";
|
import { addEmojiIfNotExists, emojiToAPI, emojiToLysand } from "./Emoji";
|
||||||
import { addInstanceIfNotExists } from "./Instance";
|
import { addInstanceIfNotExists } from "./Instance";
|
||||||
import type { APISource } from "~types/entities/source";
|
import type { APISource } from "~types/entities/source";
|
||||||
|
import { addUserToMeilisearch } from "@meilisearch";
|
||||||
|
|
||||||
export interface AuthData {
|
export interface AuthData {
|
||||||
user: UserWithRelations | null;
|
user: UserWithRelations | null;
|
||||||
|
|
@ -151,6 +152,9 @@ export const fetchRemoteUser = async (uri: string) => {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Add to Meilisearch
|
||||||
|
await addUserToMeilisearch(user);
|
||||||
|
|
||||||
const emojis = [];
|
const emojis = [];
|
||||||
|
|
||||||
for (const emoji of userEmojis) {
|
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({
|
return await client.user.update({
|
||||||
where: {
|
where: {
|
||||||
id: user.id,
|
id: user.id,
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import { getConfig } from "@config";
|
||||||
import chalk from "chalk";
|
import chalk from "chalk";
|
||||||
import { client } from "~database/datasource";
|
import { client } from "~database/datasource";
|
||||||
import { Meilisearch } from "meilisearch";
|
import { Meilisearch } from "meilisearch";
|
||||||
|
import type { Status, User } from "@prisma/client";
|
||||||
|
|
||||||
const config = getConfig();
|
const config = getConfig();
|
||||||
|
|
||||||
|
|
@ -48,6 +49,32 @@ export enum MeiliIndexType {
|
||||||
Statuses = "statuses",
|
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 = (
|
export const getNthDatabaseAccountBatch = (
|
||||||
n: number,
|
n: number,
|
||||||
batchSize = 1000
|
batchSize = 1000
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue