34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
import uuid
|
|
from typing import List
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.crud.base import CRUDBase
|
|
from app.models.album import Album
|
|
from app.schemas.album import AlbumCreate, AlbumUpdate
|
|
|
|
|
|
class CRUDAlbum(CRUDBase[Album, AlbumCreate, AlbumUpdate]):
|
|
def create(self, db: Session, *, obj_in: AlbumCreate) -> Album:
|
|
album_id = str(uuid.uuid4())
|
|
db_obj = Album(
|
|
id=album_id,
|
|
title=obj_in.title,
|
|
artist_id=obj_in.artist_id,
|
|
release_year=obj_in.release_year,
|
|
cover_image=obj_in.cover_image,
|
|
description=obj_in.description,
|
|
)
|
|
db.add(db_obj)
|
|
db.commit()
|
|
db.refresh(db_obj)
|
|
return db_obj
|
|
|
|
def get_by_artist(self, db: Session, *, artist_id: str, skip: int = 0, limit: int = 100) -> List[Album]:
|
|
return db.query(Album).filter(Album.artist_id == artist_id).offset(skip).limit(limit).all()
|
|
|
|
def search_by_title(self, db: Session, *, title: str, skip: int = 0, limit: int = 100) -> List[Album]:
|
|
return db.query(Album).filter(Album.title.ilike(f"%{title}%")).offset(skip).limit(limit).all()
|
|
|
|
|
|
album = CRUDAlbum(Album) |