import uuid from typing import List, Optional from sqlalchemy.orm import Session from app.crud.base import CRUDBase from app.models.artist import Artist from app.schemas.artist import ArtistCreate, ArtistUpdate class CRUDArtist(CRUDBase[Artist, ArtistCreate, ArtistUpdate]): def create(self, db: Session, *, obj_in: ArtistCreate) -> Artist: artist_id = str(uuid.uuid4()) db_obj = Artist( id=artist_id, name=obj_in.name, bio=obj_in.bio, image=obj_in.image, ) db.add(db_obj) db.commit() db.refresh(db_obj) return db_obj def get_by_name(self, db: Session, *, name: str) -> Optional[Artist]: return db.query(Artist).filter(Artist.name == name).first() def search_by_name(self, db: Session, *, name: str, skip: int = 0, limit: int = 100) -> List[Artist]: return db.query(Artist).filter(Artist.name.ilike(f"%{name}%")).offset(skip).limit(limit).all() artist = CRUDArtist(Artist)