diff --git a/backend/app/config.py b/backend/app/config.py new file mode 100644 index 0000000..9ba6006 --- /dev/null +++ b/backend/app/config.py @@ -0,0 +1,5 @@ +import os + +DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./jardin.db") +UPLOAD_DIR = os.getenv("UPLOAD_DIR", "./data/uploads") +CORS_ORIGINS = os.getenv("CORS_ORIGINS", "http://localhost:5173").split(",") diff --git a/backend/app/database.py b/backend/app/database.py new file mode 100644 index 0000000..ed43eaf --- /dev/null +++ b/backend/app/database.py @@ -0,0 +1,13 @@ +from sqlmodel import SQLModel, create_engine, Session +from app.config import DATABASE_URL + +engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False}) + + +def get_session(): + with Session(engine) as session: + yield session + + +def create_db_and_tables(): + SQLModel.metadata.create_all(engine) diff --git a/backend/app/main.py b/backend/app/main.py new file mode 100644 index 0000000..577dc94 --- /dev/null +++ b/backend/app/main.py @@ -0,0 +1,33 @@ +import os +from contextlib import asynccontextmanager + +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware + +from app.config import CORS_ORIGINS, UPLOAD_DIR +from app.database import create_db_and_tables + + +@asynccontextmanager +async def lifespan(app: FastAPI): + os.makedirs(UPLOAD_DIR, exist_ok=True) + import app.models # noqa — enregistre tous les modèles avant create_all + create_db_and_tables() + from app.seed import run_seed + run_seed() + yield + + +app = FastAPI(title="Jardin API", lifespan=lifespan) + +app.add_middleware( + CORSMiddleware, + allow_origins=CORS_ORIGINS, + allow_methods=["*"], + allow_headers=["*"], +) + + +@app.get("/api/health") +def health(): + return {"status": "ok"} diff --git a/backend/app/seed.py b/backend/app/seed.py new file mode 100644 index 0000000..1e0ab33 --- /dev/null +++ b/backend/app/seed.py @@ -0,0 +1,2 @@ +def run_seed(): + pass diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000..ba62ba6 --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,7 @@ +fastapi==0.115.5 +uvicorn[standard]==0.32.1 +sqlmodel==0.0.22 +python-multipart==0.0.12 +aiofiles==24.1.0 +pytest==8.3.3 +httpx==0.28.0