import sqlite3 import product, db, recipe from typing import List from fastapi import FastAPI, Depends, HTTPException from fastapi.middleware.cors import CORSMiddleware app = FastAPI() # Add CORS middleware app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"] ) # Dependency to create SQLite connection async def get_db(): sql_db = await db.connect() try: yield sql_db finally: sql_db.close() @app.get("/recipes/parse") async def parse_recipe_handler(url: str, conn: sqlite3.Connection = Depends(get_db)): return await recipe.parse_recipe(conn, url) @app.get("/recipes/ingredients/parse") async def parse_ingredients(lines: List[str], conn: sqlite3.Connection = Depends(get_db)): ingredients = recipe.parse_ingredient_from_nlp(lines) recipe.match_existing_products(conn, ingredients) return ingredients @app.post("/product/") async def create_product(url: str, conn: sqlite3.Connection = Depends(get_db)): p = await product.create_product(url) db.insert_product(conn, p) return p