gues-kucinako/src/requests.ts

68 lines
2.0 KiB
TypeScript

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};