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)