78 lines
3.2 KiB
Python
78 lines
3.2 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Dict, List
|
|
|
|
import aiosqlite
|
|
from fastapi import APIRouter, Depends, Request
|
|
|
|
import ingredients
|
|
import meals
|
|
import persons
|
|
import recipes
|
|
import shopping
|
|
from common import ProblemDetails
|
|
from main import get_db, cookie_person # temporary during extraction
|
|
|
|
router = APIRouter(prefix="/shopping", tags=["shopping"])
|
|
|
|
|
|
@router.get("/current", operation_id="getCurrentShoppingList", summary="Get the current aggregated shopping list")
|
|
async def get_current_shopping_list(
|
|
conn: aiosqlite.Connection = Depends(get_db),
|
|
):
|
|
raise NotImplementedError("get_current_shopping_list extraction pending")
|
|
|
|
|
|
@router.get("/{list_id}", operation_id="getShoppingList", summary="Get a purchased shopping list by id",
|
|
responses={404: {"model": ProblemDetails, "description": "Shopping list not found", "content": {"application/problem+json": {}}}})
|
|
async def get_shopping_list(
|
|
list_id: int, conn: aiosqlite.Connection = Depends(get_db), request: Request | None = None
|
|
):
|
|
raise NotImplementedError("get_shopping_list extraction pending")
|
|
|
|
|
|
@router.post("", operation_id="purchaseIngredients", summary="Purchase ingredients for a shopping list")
|
|
async def purchase_ingredients(
|
|
shopping_list: shopping.ShoppingList,
|
|
conn: aiosqlite.Connection = Depends(get_db),
|
|
person: persons.Person = Depends(cookie_person),
|
|
):
|
|
raise NotImplementedError("purchase_ingredients extraction pending")
|
|
|
|
|
|
@router.get("/current/me/ingredients", operation_id="getMyShoppingList", summary="Get my outstanding ingredient requests")
|
|
async def get_my_shopping_list(
|
|
conn: aiosqlite.Connection = Depends(get_db), person: persons.Person = Depends(cookie_person)
|
|
) -> List[ingredients.Ingredient]:
|
|
raise NotImplementedError("get_my_shopping_list extraction pending")
|
|
|
|
|
|
@router.post("/current/me/ingredients", operation_id="syncMyShoppingList", summary="Sync my outstanding ingredient requests")
|
|
async def sync_my_shopping_list(
|
|
requests: List[ingredients.Ingredient],
|
|
conn: aiosqlite.Connection = Depends(get_db),
|
|
person: persons.Person = Depends(cookie_person),
|
|
) -> List[ingredients.Ingredient]:
|
|
raise NotImplementedError("sync_my_shopping_list extraction pending")
|
|
|
|
|
|
@router.post("/current/meals/{meal_id}", operation_id="requestMeal", summary="Request a meal for shopping",
|
|
responses={404: {"model": ProblemDetails, "description": "Meal not found", "content": {"application/problem+json": {}}}})
|
|
async def request_meal(
|
|
meal_id: int,
|
|
conn: aiosqlite.Connection = Depends(get_db),
|
|
person: persons.Person = Depends(cookie_person),
|
|
request: Request | None = None,
|
|
):
|
|
raise NotImplementedError("request_meal extraction pending")
|
|
|
|
|
|
@router.delete("/current/meals/{meal_id}", operation_id="unrequestMeal", summary="Remove a meal request",
|
|
responses={404: {"model": ProblemDetails, "description": "Meal not found", "content": {"application/problem+json": {}}}})
|
|
async def unrequest_meal(
|
|
meal_id: int,
|
|
conn: aiosqlite.Connection = Depends(get_db),
|
|
person: persons.Person = Depends(cookie_person),
|
|
request: Request | None = None,
|
|
):
|
|
raise NotImplementedError("unrequest_meal extraction pending")
|