Zbavení se duplicitních Typescript typů

This commit is contained in:
2023-07-09 19:17:20 +02:00
parent c5e3c76cc1
commit 6a79e7989b
25 changed files with 10282 additions and 130 deletions
+3 -2
View File
@@ -1,5 +1,5 @@
{
"name": "luncher-server",
"name": "@luncher/server",
"version": "1.0.0",
"main": "src/index.ts",
"license": "MIT",
@@ -25,7 +25,8 @@
"dotenv": "^16.1.3",
"express": "^4.18.2",
"jsonwebtoken": "^9.0.0",
"@luncher/api": "1.0.0",
"simple-json-db": "^2.0.0",
"socket.io": "^4.6.1"
}
}
}
+3 -3
View File
@@ -8,10 +8,10 @@ import dotenv from 'dotenv';
import path from 'path';
import { getMenuSladovnicka, getMenuTechTower, getMenuUMotliku } from "./restaurants";
import { getQr } from "./qr";
import { Restaurants } from "./types";
import { generateToken, getLogin, verify } from "./auth";
import { Restaurants } from "@luncher/api/dist/Types";
const ENVIRONMENT = process.env.NODE_ENV || 'production'
const ENVIRONMENT = process.env.NODE_ENV || 'production';
dotenv.config({ path: path.resolve(__dirname, `../.env.${ENVIRONMENT}`) });
const app = express();
@@ -95,7 +95,7 @@ app.get("/api/data", (req, res) => {
/** Vrátí obědové menu pro dostupné podniky. */
app.get("/api/food", async (req, res) => {
const mock = !!req.query?.mock;
const mock = !!process.env.MOCK_DATA;
const date = new Date();
const data = {
[Restaurants.SLADOVNICKA]: await getMenuSladovnicka(date, mock),
+2 -2
View File
@@ -1,6 +1,6 @@
/** Notifikace pro gotify*/
import axios, { AxiosError, AxiosResponse } from 'axios';
import { GotifyServer, NotififaceInput, NotifikaceData, UdalostEnum } from "./types";
import { GotifyServer, NotififaceInput, NotifikaceData } from '@luncher/api/dist/Types';
import axios, { AxiosError } from 'axios';
import dotenv from 'dotenv';
import path from 'path';
+1 -1
View File
@@ -4,7 +4,7 @@ import path from "path";
import fs from "fs";
import { load } from 'cheerio';
import { formatDate } from "./utils";
import { Food } from "./types";
import { Food } from "@luncher/api/dist/Types";
// Fráze v názvech jídel, které naznačují že se jedná o polévku
const SOUP_NAMES = ['polévka', 'česnečka', 'česnekový krém', 'cibulačka', 'vývar']
+1 -1
View File
@@ -1,8 +1,8 @@
import { ClientData, Locations, Order, Pizza, PizzaDayState, PizzaOrder, PizzaSize, UdalostEnum } from "./types";
import { db } from "./database";
import { formatDate, getHumanDate, getIsWeekend } from "./utils";
import { callNotifikace } from "./notifikace";
import { generateQr } from "./qr";
import { ClientData, PizzaDayState, UdalostEnum, Pizza, PizzaSize, Order, PizzaOrder, Locations } from "@luncher/api/dist/Types";
/** Vrátí dnešní datum, případně fiktivní datum pro účely vývoje a testování. */
function getToday(): Date {
-108
View File
@@ -1,108 +0,0 @@
import exp from "constants";
export interface Choices {
[location: string]: string[],
}
/** Velikost konkrétní pizzy */
export interface PizzaSize {
varId: number, // unikátní ID varianty pizzy
size: string, // velikost pizzy, např. "30cm"
pizzaPrice: number, // cena samotné pizzy
boxPrice: number, // cena krabice
price: number, // celková cena (pizza + krabice)
}
/** Jedna konkrétní pizza */
export interface Pizza {
name: string, // název pizzy
ingredients: string[], // seznam ingrediencí
sizes: PizzaSize[], // dostupné velikosti pizzy
}
/** Objednávka jedné konkrétní pizzy */
export interface PizzaOrder {
varId: number, // unikátní ID varianty pizzy
name: string, // název pizzy
size: string, // velikost pizzy jako string (30cm)
price: number, // cena pizzy v Kč, včetně krabice
}
/** Celková objednávka jednoho člověka */
export interface Order {
customer: string, // jméno objednatele
pizzaList: PizzaOrder[], // seznam objednaných pizz
totalPrice: number, // celková cena všech objednaných pizz a krabic
hasQr?: boolean, // true, pokud je k objednávce vygenerován QR kód pro platbu
note?: string, // volitelná uživatelská poznámka k objednávce
}
/** Stav pizza dne */
export enum PizzaDayState {
NOT_CREATED, // Pizza day nebyl založen
CREATED, // Pizza day je založen
LOCKED, // Objednávky uzamčeny
ORDERED, // Pizzy objednány
DELIVERED // Pizzy doručeny
}
/** Informace o pizza day pro dnešní den */
interface PizzaDay {
state: PizzaDayState, // stav pizza dne
creator: string, // jméno zakladatele
orders: Order[], // seznam objednávek jednotlivých lidí
}
/** Veškerá data pro zobrazení na klientovi */
export interface ClientData {
date: string, // dnešní datum pro zobrazení
isWeekend: boolean, // příznak, zda je dnes víkend
choices: Choices, // seznam voleb
pizzaDay?: PizzaDay, // pizza day pro dnešní den, pokud existuje
}
/** Jídlo z obědového menu restaurace. */
export interface Food {
amount?: string, // množství standardní porce, např. 0,33l nebo 150g
name: string, // název/popis jídla
price: string, // cena ve formátu '135 Kč'
isSoup: boolean, // příznak, zda se jedná o polévku
}
/** Výčtový typ pro restaurace, pro které umíme získat a parsovat obědové menu. */
export enum Restaurants {
SLADOVNICKA = 'sladovnicka',
UMOTLIKU = 'uMotliku',
TECHTOWER = 'techTower',
}
export enum Locations {
SLADOVNICKA = 'Sladovnická',
UMOTLIKU = 'U Motlíků',
TECHTOWER = 'TechTower',
SPSE = 'SPŠE',
PIZZA = 'Pizza day',
OBJEDNAVAM = 'Budu objednávat',
NEOBEDVAM = 'Mám vlastní/neobědvám',
}
export enum UdalostEnum {
ZAHAJENA_PIZZA = "Zahájen pizza day",
OBJEDNANA_PIZZA = "Objednána pizza"
}
export interface NotififaceInput {
udalost: UdalostEnum,
user: string,
}
export interface NotifikaceData {
input: NotififaceInput,
gotify?: boolean,
teams?: boolean,
}
export interface GotifyServer {
server: string;
api_keys: string[];
}
+3
View File
@@ -788,6 +788,9 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
"luncher-api@file:./../api":
version "1.0.0"
make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"