import jwt from "jsonwebtoken"; import {Conlang, SearchDirection} from "./types"; const backendUrl = "https://kucinakobackend.ichigo.everydayimshuflin.com"; const getPassword = (): string | null => window.sessionStorage.getItem("password"); const setPassword = (password: string) => { window.sessionStorage.setItem("password", password); }; const makeAuthorizationHeader = (key: string): string => { const unixTime = Date.now() / 1000; const token = jwt.sign({role: "conlang_postgrest_rw", exp: unixTime + 60}, key); return `Bearer ${token}`; }; const updateEntry = (conlang: Conlang, id: number, english: string) => { const url = `${backendUrl}/${conlang.toString()}?id=eq.${id}`; const request = new Request(url, { method: "PATCH", headers: { Authorization: makeAuthorizationHeader(getPassword()), "Content-Type": "application/json", }, body: JSON.stringify({ eng: english, }), }); fetch(request).then((resp) => console.log(resp)); }; function searchEntry(searchTerm: string, conlang: Conlang, direction: SearchDirection, jsonHandler: (json: Object) => void) { const specForConlang = { [Conlang.Saimiar]: "sai", [Conlang.Juteyuji]: "jut", [Conlang.Tukvaysi]: "tuk", [Conlang.Elesu]: "elesu", }; const offset = 0; const limit = 20; const conlangDb = conlang.toString(); const conlangSpec = specForConlang[conlang]; const field = direction === SearchDirection.ToConlang ? "eng" : conlangSpec; const params = new URLSearchParams([ [field, `like.*${searchTerm}*`], ["order", conlangSpec], ["limit", limit], ["offset", offset], ] as string[][]); const effectiveUri = `${backendUrl}/${conlangDb}?${params}`; fetch(`${effectiveUri}`) .then((resp) => resp.json()) .then((json) => { jsonHandler(json); }); } export {backendUrl, updateEntry, getPassword, setPassword, searchEntry};