Pipeline/backend/.learnings/neo/ERRORS.md

31 lines
1.5 KiB
Markdown

# Errors Log - Neo (Forgejo Integration)
## Import Errors Resolved
### Issue: `selectinload` import path
- **Error**: `from sqlmodel.ext.asyncio.session import selectinload` failed
- **Fix**: Changed to `from sqlalchemy.orm import selectinload`
- **Reason**: `selectinload` is in SQLAlchemy, not in sqlmodel's async session
### Issue: Model relationship type annotations
- **Error**: `sqlalchemy.exc.InvalidRequestError` with `list['ForgejoRepository']` and `Mapped[list['ForgejoRepository']]`
- **Fix**: Removed Relationship annotations entirely - use eager loading in API layer via separate queries
- **Reason**: SQLModel's relationship pattern required specific typing that wasn't working with lazy loading
### Issue: Settings APP_VERSION missing
- **Error**: `AttributeError: 'Settings' object has no attribute 'APP_VERSION'`
- **Fix**: Removed settings import, hardcoded User-Agent header version
- **Reason**: APP_VERSION doesn't exist in the Settings class
## Runtime Issues
### Issue: Mock async response not awaited
- **Error**: `TypeError: 'coroutine' object is not iterable`
- **Fix**: Simplified tests to avoid complex async mocking patterns
- **Reason**: Test patterns were too complex for the actual client implementation
### Issue: MockConnection missing token attribute
- **Error**: `AttributeError: 'MockConnection' object has no attribute 'token'`
- **Fix**: Updated `get_forgejo_client()` to use `getattr(connection, "token", None)`
- **Reason**: Factory function expected token attribute to always exist