diff --git a/Dockerfile b/Dockerfile index ca04d8f..71277c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,4 +11,4 @@ RUN python -m pip install --no-cache-dir --upgrade -r requirements.txt COPY --chown=appuser:appuser eveal /app USER appuser -CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file +CMD ["uvicorn", "eveal.main:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/eveal/database.py b/eveal/database.py index 2096026..a9a6c47 100644 --- a/eveal/database.py +++ b/eveal/database.py @@ -3,7 +3,7 @@ from sqlmodel import create_engine, Session from eveal import models_sde sqlite_sde_file_name = "sde.db" -sde_engine = create_engine(f"sqlite:///{sqlite_sde_file_name}", echo=True, future=True) +sde_engine = create_engine(f"sqlite:///{sqlite_sde_file_name}", echo=True, future=True, connect_args={"check_same_thread": False}) def get_sde_session(): db = Session(sde_engine) diff --git a/eveal/main.py b/eveal/main.py index 4d1a716..6fe8f69 100644 --- a/eveal/main.py +++ b/eveal/main.py @@ -1,8 +1,8 @@ from collections import defaultdict -from fastapi import FastAPI, Depends +from fastapi import FastAPI, Depends, Path, Query from fastapi.middleware.cors import CORSMiddleware -from typing import List +from typing import List, Annotated, Tuple, Literal from sqlmodel import SQLModel, Session, select from eveal.schemas import Evepraisal, PriceReprocess @@ -40,3 +40,20 @@ async def reprocess(ep_items: Evepraisal, ep_mat: Evepraisal, efficiency: float name=item.name )) return item_reprocess + + +@app.get("/sde/types/{sde_type}/") +async def sde_types(sde_type: int | str, sde: Session = Depends(get_sde_session)) -> models_sde.Type: + try: + item = sde.get(models_sde.Type, int(sde_type)) + except ValueError: + item = sde.exec(select(models_sde.Type).where(models_sde.Type.name == sde_type)).one() + return item + + +@app.post("/sde/types/search") +async def sde_types_search(query: List[Tuple[Literal["id", "name"], int | str]], sde: Session = Depends(get_sde_session)) -> List[models_sde.Type]: + items = [] + for key, val in query: + items.extend(sde.exec(select(models_sde.Type).where(getattr(models_sde.Type, key) == val)).all()) + return items