From eb6b28b326014de43fff352b7a14cd58342320a2 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Sat, 25 Jan 2025 14:31:05 -0800 Subject: [PATCH] Sqlite fallback search --- packages/skin-museum-client/src/algolia.js | 21 +++++++++++++++++++ .../skin-museum-client/src/redux/epics.js | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/skin-museum-client/src/algolia.js b/packages/skin-museum-client/src/algolia.js index a0574bc3..358a24e9 100644 --- a/packages/skin-museum-client/src/algolia.js +++ b/packages/skin-museum-client/src/algolia.js @@ -1,8 +1,29 @@ +import * as Utils from "./utils"; import algoliasearch from "algoliasearch"; var client = algoliasearch("HQ9I5Z6IM5", "6466695ec3f624a5fccf46ec49680e51"); var index = client.initIndex("Skins"); +export async function graphqlSearch(query, options = {}) { + const queryText = Utils.gql` + query SearchQuery($query: String!) { + search_classic_skins(query: $query) { + filename + md5 + nsfw + } +}`; + const data = await Utils.fetchGraphql(queryText, { query }); + const hits = data.search_classic_skins.map((skin) => { + return { + objectID: skin.md5, + fileName: skin.filename, + nsfw: skin.nsfw, + }; + }); + return { hits }; +} + export function search(query, options = {}) { return new Promise((resolve, reject) => { index.search( diff --git a/packages/skin-museum-client/src/redux/epics.js b/packages/skin-museum-client/src/redux/epics.js index f59a7663..22f9ebfb 100644 --- a/packages/skin-museum-client/src/redux/epics.js +++ b/packages/skin-museum-client/src/redux/epics.js @@ -19,7 +19,7 @@ import { takeWhile, mergeAll, } from "rxjs/operators"; -import { search } from "../algolia"; +import { search, graphqlSearch } from "../algolia"; import queryParser from "../queryParser"; import { CHUNK_SIZE } from "../constants"; import * as UploadUtils from "../upload/uploadUtils"; @@ -148,7 +148,7 @@ const searchEpic = (actions) => const [newQuery, options] = queryParser(query); - return from(search(newQuery, options)).pipe( + return from(graphqlSearch(newQuery, options)).pipe( map((content) => { const matchingSkins = content.hits.map((hit) => ({ hash: hit.objectID,