Fix dupe check on sbaplayers

This commit is contained in:
Cal Corum 2025-06-11 00:33:09 -05:00
parent 1d652ee5fa
commit e85cac61df

View File

@ -20,10 +20,10 @@ router = APIRouter(
class SbaPlayerModel(pydantic.BaseModel): class SbaPlayerModel(pydantic.BaseModel):
first_name: str first_name: str
last_name: str last_name: str
key_mlbam: int = None key_mlbam: Optional[int] = None
key_fangraphs: int = None key_fangraphs: Optional[int] = None
key_bbref: str = None key_bbref: Optional[str] = None
key_retro: str = None key_retro: Optional[str] = None
class PlayerList(pydantic.BaseModel): class PlayerList(pydantic.BaseModel):
@ -166,17 +166,18 @@ async def post_players(players: PlayerList, token: str = Depends(oauth2_scheme))
new_players = [] new_players = []
for x in players.players: for x in players.players:
dupes = SbaPlayer.select().where( dupes = SbaPlayer.select().where(
(SbaPlayer.key_fangraphs == x.key_fangraphs) | (SbaPlayer.key_mlbam == x.key_mlbam) | ((SbaPlayer.key_fangraphs == x.key_fangraphs) & (x.key_fangraphs is not None)) | ((SbaPlayer.key_mlbam == x.key_mlbam) & (x.key_mlbam is not None)) |
(SbaPlayer.key_retro == x.key_retro) | (SbaPlayer.key_bbref == x.key_bbref) ((SbaPlayer.key_retro == x.key_retro) & (x.key_retro is not None)) | ((SbaPlayer.key_bbref == x.key_bbref) & (x.key_bbref is not None))
) )
if dupes.count() > 0: if dupes.count() > 0:
logger.error(f'Found a dupe for {x}')
db.close() db.close()
raise HTTPException( raise HTTPException(
status_code=400, status_code=400,
detail=f'{x.first_name} {x.last_name} has a key already in the database' detail=f'{x.first_name} {x.last_name} has a key already in the database'
) )
new_players.append(x.dict()) new_players.append(x.model_dump())
with db.atomic(): with db.atomic():
for batch in chunked(new_players, 15): for batch in chunked(new_players, 15):