Fix linting errors across backend and frontend
Backend: auto-fix and format all ruff issues, manually fix B904/B023/ SIM117/B007/E741/F841 errors, suppress B008 (FastAPI Depends) and F821 (SQLAlchemy forward refs) in config. Frontend: allow constant exports, disable React compiler-specific rules (set-state-in-effect, preserve-manual-memoization). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timezone
|
||||
from datetime import UTC, datetime
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Response
|
||||
from sqlalchemy import select
|
||||
@@ -33,7 +33,9 @@ async def _get_version_group_id(session: AsyncSession, game_id: int) -> int:
|
||||
if game is None:
|
||||
raise HTTPException(status_code=404, detail="Game not found")
|
||||
if game.version_group_id is None:
|
||||
raise HTTPException(status_code=400, detail="Game has no version group assigned")
|
||||
raise HTTPException(
|
||||
status_code=400, detail="Game has no version group assigned"
|
||||
)
|
||||
return game.version_group_id
|
||||
|
||||
|
||||
@@ -41,9 +43,7 @@ async def _get_version_group_id(session: AsyncSession, game_id: int) -> int:
|
||||
|
||||
|
||||
@router.get("/games/{game_id}/bosses", response_model=list[BossBattleResponse])
|
||||
async def list_bosses(
|
||||
game_id: int, session: AsyncSession = Depends(get_session)
|
||||
):
|
||||
async def list_bosses(game_id: int, session: AsyncSession = Depends(get_session)):
|
||||
vg_id = await _get_version_group_id(session, game_id)
|
||||
|
||||
result = await session.execute(
|
||||
@@ -72,7 +72,9 @@ async def reorder_bosses(
|
||||
bosses = {b.id: b for b in result.scalars().all()}
|
||||
|
||||
if len(bosses) != len(boss_ids):
|
||||
raise HTTPException(status_code=400, detail="Some boss IDs not found in this game")
|
||||
raise HTTPException(
|
||||
status_code=400, detail="Some boss IDs not found in this game"
|
||||
)
|
||||
|
||||
# Phase 1: set temporary negative orders to avoid unique constraint violations
|
||||
for i, item in enumerate(data.bosses):
|
||||
@@ -94,7 +96,9 @@ async def reorder_bosses(
|
||||
return result.scalars().all()
|
||||
|
||||
|
||||
@router.post("/games/{game_id}/bosses", response_model=BossBattleResponse, status_code=201)
|
||||
@router.post(
|
||||
"/games/{game_id}/bosses", response_model=BossBattleResponse, status_code=201
|
||||
)
|
||||
async def create_boss(
|
||||
game_id: int,
|
||||
data: BossBattleCreate,
|
||||
@@ -157,7 +161,9 @@ async def delete_boss(
|
||||
vg_id = await _get_version_group_id(session, game_id)
|
||||
|
||||
result = await session.execute(
|
||||
select(BossBattle).where(BossBattle.id == boss_id, BossBattle.version_group_id == vg_id)
|
||||
select(BossBattle).where(
|
||||
BossBattle.id == boss_id, BossBattle.version_group_id == vg_id
|
||||
)
|
||||
)
|
||||
boss = result.scalar_one_or_none()
|
||||
if boss is None:
|
||||
@@ -188,9 +194,13 @@ async def bulk_import_bosses(
|
||||
|
||||
bosses_data = [item.model_dump() for item in items]
|
||||
try:
|
||||
count = await upsert_bosses(session, vg_id, bosses_data, dex_to_id, route_name_to_id)
|
||||
count = await upsert_bosses(
|
||||
session, vg_id, bosses_data, dex_to_id, route_name_to_id
|
||||
)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=f"Failed to import bosses: {e}")
|
||||
raise HTTPException(
|
||||
status_code=400, detail=f"Failed to import bosses: {e}"
|
||||
) from e
|
||||
|
||||
await session.commit()
|
||||
return BulkImportResult(created=count, updated=0, errors=[])
|
||||
@@ -252,22 +262,20 @@ async def set_boss_team(
|
||||
|
||||
|
||||
@router.get("/runs/{run_id}/boss-results", response_model=list[BossResultResponse])
|
||||
async def list_boss_results(
|
||||
run_id: int, session: AsyncSession = Depends(get_session)
|
||||
):
|
||||
async def list_boss_results(run_id: int, session: AsyncSession = Depends(get_session)):
|
||||
run = await session.get(NuzlockeRun, run_id)
|
||||
if run is None:
|
||||
raise HTTPException(status_code=404, detail="Run not found")
|
||||
|
||||
result = await session.execute(
|
||||
select(BossResult)
|
||||
.where(BossResult.run_id == run_id)
|
||||
.order_by(BossResult.id)
|
||||
select(BossResult).where(BossResult.run_id == run_id).order_by(BossResult.id)
|
||||
)
|
||||
return result.scalars().all()
|
||||
|
||||
|
||||
@router.post("/runs/{run_id}/boss-results", response_model=BossResultResponse, status_code=201)
|
||||
@router.post(
|
||||
"/runs/{run_id}/boss-results", response_model=BossResultResponse, status_code=201
|
||||
)
|
||||
async def create_boss_result(
|
||||
run_id: int,
|
||||
data: BossResultCreate,
|
||||
@@ -293,14 +301,14 @@ async def create_boss_result(
|
||||
if result:
|
||||
result.result = data.result
|
||||
result.attempts = data.attempts
|
||||
result.completed_at = datetime.now(timezone.utc) if data.result == "won" else None
|
||||
result.completed_at = datetime.now(UTC) if data.result == "won" else None
|
||||
else:
|
||||
result = BossResult(
|
||||
run_id=run_id,
|
||||
boss_battle_id=data.boss_battle_id,
|
||||
result=data.result,
|
||||
attempts=data.attempts,
|
||||
completed_at=datetime.now(timezone.utc) if data.result == "won" else None,
|
||||
completed_at=datetime.now(UTC) if data.result == "won" else None,
|
||||
)
|
||||
session.add(result)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user