add fuzzy name search and marketgroup_id search

This commit is contained in:
2023-10-18 10:03:02 +02:00
parent 578c03fb45
commit 69608bb946

View File

@@ -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