Fix linting errors across backend and frontend
All checks were successful
CI / backend-lint (push) Successful in 7s
CI / frontend-lint (push) Successful in 29s

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:
Julian Tabel
2026-02-10 12:26:57 +01:00
parent 7f8890086f
commit e4111c67bc
48 changed files with 1225 additions and 883 deletions

View File

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