diff --git a/eveal/main.py b/eveal/main.py index b9adc38..0e0df9a 100644 --- a/eveal/main.py +++ b/eveal/main.py @@ -2,7 +2,7 @@ from collections import defaultdict from fastapi import FastAPI, Depends, Path, Query from fastapi.middleware.cors import CORSMiddleware -from typing import List, Annotated, Tuple, Literal +from typing import List, Annotated, Tuple, Literal, Dict, TypedDict from sqlmodel import SQLModel, Session, select from eveal.schemas import Evepraisal, PriceReprocess @@ -51,10 +51,14 @@ async def sde_types(sde_type: int | str, db: Session = Depends(get_session)) -> @app.post("/sde/types/search") -async def sde_types_search(query: List[Tuple[Literal["id", "name"], int | str]], db: Session = Depends(get_session)) -> List[models_sde.SDEType]: +async def sde_types_search(query: List[Dict[Literal["id", "name", "name_i", "marketgroup_id"], int | str]], db: Session = Depends(get_session)) -> List[models_sde.SDEType]: items = [] - for key, val in query: - items.extend(db.query(models_sde.SDEType).filter(getattr(models_sde.SDEType, key) == val).all()) + for q in query: + for k in q.keys(): + if k.endswith("_i"): + items.extend(db.query(models_sde.SDEType).filter(getattr(models_sde.SDEType, k[:-2]).contains(q[k])).all()) + else: + items.extend(db.query(models_sde.SDEType).filter(getattr(models_sde.SDEType, k) == q[k]).all()) return items