Ukládání dat výhradně do DB

This commit is contained in:
2023-08-06 21:45:27 +02:00
parent 18cb172e06
commit c4b14bdf6b
7 changed files with 85 additions and 37 deletions

View File

@@ -1,8 +1,9 @@
import { formatDate, getHumanDate, getIsWeekend } from "./utils";
import { formatDate, getHumanDate, getHumanTime, getIsWeekend } from "./utils";
import { callNotifikace } from "./notifikace";
import { generateQr } from "./qr";
import { ClientData, PizzaDayState, UdalostEnum, Pizza, PizzaSize, Order, PizzaOrder, Locations } from "../../types";
import { ClientData, PizzaDayState, UdalostEnum, Pizza, PizzaSize, Order, PizzaOrder, Locations, Restaurants, Food, Menu } from "../../types";
import getStorage from "./storage";
import { getMenuSladovnicka, getMenuTechTower, getMenuUMotliku } from "./restaurants";
const storage = getStorage();
@@ -51,6 +52,44 @@ export async function savePizzaList(pizzaList: Pizza[]): Promise<ClientData> {
return clientData;
}
/**
* Vrátí menu dané restaurace pro předaný den. Pokud neexistuje, provede jeho stažení a uložení do DB.
*
* @param restaurant restaurace
* @param date datum
* @param mock příznak, zda chceme pouze mock data
*/
export async function getRestaurantMenu(restaurant: Restaurants, date?: Date, mock?: boolean): Promise<Menu> {
await initIfNeeded();
const today = formatDate(getToday());
const clientData: ClientData = await storage.getData(today);
if (!clientData.menus) {
clientData.menus = {};
storage.setData(today, clientData);
}
if (!clientData?.menus?.[restaurant]) {
if (!clientData.menus[restaurant]) {
clientData.menus[restaurant] = {
lastUpdate: getHumanTime(new Date()),
food: [],
};
}
switch (restaurant) {
case Restaurants.SLADOVNICKA:
clientData.menus[restaurant].food = await getMenuSladovnicka(date, mock);
break;
case Restaurants.UMOTLIKU:
clientData.menus[restaurant].food = await getMenuUMotliku(date, mock);
break;
case Restaurants.TECHTOWER:
clientData.menus[restaurant].food = await getMenuTechTower(date, mock);
break;
}
storage.setData(today, clientData);
}
return clientData?.menus?.[restaurant];
}
/**
* Vytvoří pizza day pro aktuální den a vrátí data pro klienta.
*/