32 lines
1020 B
Python
32 lines
1020 B
Python
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) |