Skip to content

Commit 6d7a01e

Browse files
committed
ADD: search races in season endpoint
1 parent 2e94933 commit 6d7a01e

2 files changed

Lines changed: 32 additions & 3 deletions

File tree

app/api/season.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
import requests, os
12
from app.db import get_db
3+
from sqlalchemy import func
24
from app.utils import serialize
35
from sqlalchemy.orm import Session
4-
from fastapi.responses import JSONResponse
56
from fastapi import Depends, APIRouter
6-
from app.models import SeasonEntrantConstructor, SeasonEntrantDriver, SeasonEntrantChassis, SeasonEntrant, SeasonConstructor, SeasonDriver, SeasonTyreManufacturer, SeasonEngineManufacturer, SeasonConstructorStanding, SeasonDriverStanding, Race
7+
from fastapi.responses import JSONResponse
8+
from app.schema.season_grand_prix import SeasonGrandPrix
9+
from app.models import SeasonEntrantConstructor, SeasonEntrantDriver, SeasonEntrantChassis, SeasonEntrant, SeasonConstructor, SeasonDriver, SeasonTyreManufacturer, SeasonEngineManufacturer, SeasonConstructorStanding, SeasonDriverStanding, Race, GrandPrix
710

811
router = APIRouter()
912

@@ -109,4 +112,25 @@ async def get_season_constructor_standing_by_year(year: int, db: Session = Depen
109112
SeasonConstructorStanding.year == year
110113
).all()
111114
constructor_standing_json = serialize(constructor_standing)
112-
return JSONResponse(content=constructor_standing_json)
115+
return JSONResponse(content=constructor_standing_json)
116+
117+
@router.post("/races/search")
118+
async def post_season_grand_prix(request: SeasonGrandPrix, db: Session = Depends(get_db)) -> JSONResponse:
119+
"""Obtiene un grand prix de una temporada"""
120+
121+
grand_prix = db.query(GrandPrix)\
122+
.order_by(
123+
func.similarity(GrandPrix.short_name, request.grand_prix).desc()
124+
)\
125+
.filter(
126+
func.similarity(GrandPrix.short_name, request.grand_prix) > 0.3
127+
)\
128+
.first()
129+
130+
grand_prix = db.query(Race)\
131+
.filter(
132+
Race.year == request.year,
133+
Race.grand_prix_id == grand_prix.id
134+
).first()
135+
grand_prix_json = serialize(grand_prix)
136+
return JSONResponse(content=grand_prix_json)

app/schema/season_grand_prix.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from pydantic import BaseModel
2+
3+
class SeasonGrandPrix(BaseModel):
4+
year: int
5+
grand_prix: str

0 commit comments

Comments
 (0)