68 lines
2.0 KiB
TypeScript
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};
|