Automated Action a9210ca8ed Create manga inventory API with FastAPI and SQLite
- Implemented CRUD operations for manga, authors, publishers, and genres
- Added search and filtering functionality
- Set up SQLAlchemy ORM with SQLite database
- Configured Alembic for database migrations
- Implemented logging with Loguru
- Added comprehensive API documentation
- Set up error handling and validation
- Added ruff for linting and formatting
2025-05-30 12:29:35 +00:00

29 lines
876 B
Python

from sqlalchemy.orm import Session
from app.crud.base import CRUDBase
from app.models.manga import Genre
from app.schemas.genre import GenreCreate, GenreUpdate
class CRUDGenre(CRUDBase[Genre, GenreCreate, GenreUpdate]):
def get_by_name(self, db: Session, *, name: str) -> Genre | None:
"""
Get a genre by name.
"""
return db.query(Genre).filter(Genre.name == name).first()
def create_if_not_exists(
self, db: Session, *, name: str, description: str | None = None
) -> Genre:
"""
Create a genre if it doesn't exist, otherwise return the existing one.
"""
genre = self.get_by_name(db, name=name)
if not genre:
genre_in = GenreCreate(name=name, description=description)
genre = self.create(db, obj_in=genre_in)
return genre
genre = CRUDGenre(Genre)