diff --git a/packages/skin-database/algolia.ts b/packages/skin-database/algolia.ts new file mode 100644 index 00000000..937e9857 --- /dev/null +++ b/packages/skin-database/algolia.ts @@ -0,0 +1,5 @@ +import algoliasearch from "algoliasearch"; +import { ALGOLIA_INDEX, ALGOLIA_KEY } from "./config"; + +const client = algoliasearch(ALGOLIA_INDEX, ALGOLIA_KEY); +export const searchIndex = client.initIndex("Skins"); diff --git a/packages/skin-database/data/skins.ts b/packages/skin-database/data/skins.ts index 997c0139..8c71ec92 100644 --- a/packages/skin-database/data/skins.ts +++ b/packages/skin-database/data/skins.ts @@ -2,6 +2,7 @@ import db from "../db"; import path from "path"; import S3 from "../s3"; import logger from "../logger"; +import { searchIndex } from "../algolia"; import { DBSkinRecord, SkinRecord, DBIARecord, TweetStatus } from "../types"; import fetch from "node-fetch"; import { analyseBuffer, NsfwPrediction } from "../nsfwImage"; @@ -206,6 +207,14 @@ export async function markAsTweeted(md5: string): Promise { export async function markAsNSFW(md5: string): Promise { await skins.findOneAndUpdate({ md5 }, { $set: { nsfw: true } }); + const indexes = [{ objectID: md5, nsfw: true }]; + // TODO: Await here, but for some reason this never completes + new Promise((resolve, reject) => { + searchIndex.partialUpdateObjects(indexes, function (err, content) { + if (err != null) reject(err); + resolve(content); + }); + }); } export async function getStatus(md5: string): Promise { diff --git a/packages/skin-database/tasks/searchIndex.js b/packages/skin-database/tasks/searchIndex.js index 0a3b64e8..f715f050 100644 --- a/packages/skin-database/tasks/searchIndex.js +++ b/packages/skin-database/tasks/searchIndex.js @@ -1,11 +1,7 @@ -const algoliasearch = require("algoliasearch"); -const { ALGOLIA_INDEX, ALGOLIA_KEY } = require("../config"); +const { searchIndex } = require("../algolia"); const path = require("path"); const db = require("../db"); -const client = algoliasearch(ALGOLIA_INDEX, ALGOLIA_KEY); -const index = client.initIndex("Skins"); - function tuncate(str, len) { const overflow = str.length - len; if (overflow < 0) { @@ -65,7 +61,7 @@ async function go({ dry = true }) { } console.log("Writing index"); const results = await new Promise((resolve, reject) => { - index.partialUpdateObjects(indexes, function (err, content) { + searchIndex.partialUpdateObjects(indexes, function (err, content) { if (err != null) reject(err); resolve(content); });