@bit-ui-libs/common
Version:
This library was generated with [Nx](https://nx.dev).
147 lines (117 loc) • 5.03 kB
text/typescript
import { AxiosProgressEvent } from 'axios';
import { BaseService, BaseServiceOptions } from '../api';
import { PagedRequest, PagedResponse } from '../common/interfaces/pagination';
import {
AddIngredientsRequest,
Allergen,
AllergenDietaryRequest,
DeleteIngredientsRequest,
Dietary,
GetIngredientsRequest,
GetMenuItemMapRequest,
GetMenuItemRequest,
GetMenuRequest,
Ingredient,
Menu,
MenuExportRequest,
MenuItem,
MenuItemAllergen,
MenuItemDietary,
MenuItemMap,
MenuItemMapRequest,
MenuItemRequest,
MenuRequest,
MenuUpdateRequest,
UpdateIngredientsRequest,
UpdateMenuItemRequest,
} from './menu.service.interfaces';
export class MenuService extends BaseService {
protected menuApiUrl: string;
protected menuItemApiUrl: string;
constructor(opts: BaseServiceOptions) {
super(opts);
this.menuApiUrl = `${this.apiUrl}/assets/v1/menus`;
this.menuItemApiUrl = `${this.apiUrl}/assets/v1/menu-items`;
}
getMenu(req: PagedRequest<GetMenuRequest>) {
return this.get<PagedResponse<Menu>>(this.menuApiUrl, req);
}
addMenu(req: MenuRequest) {
return this.post<Menu, MenuRequest>(this.menuApiUrl, req);
}
getMenuById(id: string) {
return this.get<Menu>(`${this.menuApiUrl}/${id}`);
}
updateMenu(req: MenuUpdateRequest) {
return this.put<Menu, MenuUpdateRequest>(`${this.menuApiUrl}/${req.id}`, req);
}
deleteMenu(id: string) {
return this.patch<Menu, any>(`${this.menuApiUrl}/${id}/archive`, {});
}
getMenuItems(req: PagedRequest<GetMenuItemRequest>) {
return this.get<PagedResponse<MenuItem>>(this.menuItemApiUrl, req);
}
addMenuItems(req: MenuItemRequest) {
return this.post<MenuItem, MenuItemRequest>(this.menuItemApiUrl, req);
}
getAllergen(req: PagedRequest<GetMenuItemRequest>) {
return this.get<PagedResponse<Allergen>>(`${this.menuItemApiUrl}/allergens`, req);
}
getDietary(req: PagedRequest<GetMenuItemRequest>) {
return this.get<PagedResponse<Dietary>>(`${this.menuItemApiUrl}/dietaries`, req);
}
getMenuItemsById(req: { id: string }) {
return this.get<MenuItem>(`${this.menuItemApiUrl}/${req.id}`);
}
updateMenuItem(req: UpdateMenuItemRequest) {
return this.put<MenuItem, UpdateMenuItemRequest>(`${this.menuItemApiUrl}/${req.id}`, req);
}
deleteMenuItem(req: { id: string }) {
return this.patch<MenuItem, any>(`${this.menuItemApiUrl}/${req.id}/archive`, {});
}
getMenuItemMap(req: PagedRequest<GetMenuItemMapRequest>) {
return this.get<PagedResponse<MenuItemMap>>(`${this.menuItemApiUrl}/menu-item-map`, req);
}
addMenuItemMap(req: MenuItemMapRequest) {
return this.post<MenuItemMap[], MenuItemMapRequest>(`${this.menuItemApiUrl}/menu-item-map`, req);
}
updateMenuItemMap(req: MenuItemMapRequest) {
return this.put<MenuItemMap[], MenuItemMapRequest>(`${this.menuItemApiUrl}/menu-item-map`, req);
}
deleteMenuItemMap(req: { menuId: string; menuItemId: string }) {
return this.delete<void>(`${this.menuItemApiUrl}/${req.menuId}/menu-item-map/${req.menuItemId}`);
}
getMenuItemAllergen(req: PagedRequest<{ menuItemId: string }>) {
return this.get<PagedResponse<MenuItemAllergen>>(`${this.menuItemApiUrl}/menu-item-allergens`, req);
}
addMenuItemAllergen(req: AllergenDietaryRequest) {
return this.post<MenuItemAllergen[], AllergenDietaryRequest>(`${this.menuItemApiUrl}/menu-item-allergens`, req);
}
updateMenuItemAllergen(req: AllergenDietaryRequest) {
return this.put<MenuItemAllergen[], AllergenDietaryRequest>(`${this.menuItemApiUrl}/menu-item-allergens`, req);
}
getMenuItemDietary(req: PagedRequest<{ menuItemId: string }>) {
return this.get<PagedResponse<MenuItemDietary>>(`${this.menuItemApiUrl}/menu-item-dietaries`, req);
}
addMenuItemDietary(req: AllergenDietaryRequest) {
return this.post<MenuItemDietary[], AllergenDietaryRequest>(`${this.menuItemApiUrl}/menu-item-dietaries`, req);
}
updateMenuItemDietary(req: AllergenDietaryRequest) {
return this.put<MenuItemDietary[], AllergenDietaryRequest>(`${this.menuItemApiUrl}/menu-item-dietaries`, req);
}
getMenuItemIngredients(req: GetIngredientsRequest) {
return this.get<PagedResponse<Ingredient>>(`${this.menuItemApiUrl}/menu-item-ingredients`, req);
}
addMenuItemIngredients(req: AddIngredientsRequest) {
return this.post<Ingredient[], AddIngredientsRequest>(`${this.menuItemApiUrl}/menu-item-ingredients`, req);
}
updateMenuItemIngredients(req: UpdateIngredientsRequest) {
return this.put<Ingredient, UpdateIngredientsRequest>(`${this.menuItemApiUrl}/menu-item-ingredients`, req);
}
deleteMenuItemIngredients(req: DeleteIngredientsRequest) {
return this.delete<void>(`${this.menuItemApiUrl}/${req.typeId}/menu-item-ingredients/${req.menuItemId}`);
}
menuExportById(req: MenuExportRequest, onProgress: (progressEvent: AxiosProgressEvent) => void) {
return this.get<void, MenuExportRequest>(`${this.menuApiUrl}/export-menu`, req, { onDownloadProgress: onProgress });
}
}