25 lines
829 B
Python
25 lines
829 B
Python
from typing import List, Optional
|
|
|
|
from app.core.exceptions import DALException
|
|
from app.models.movie import Movie
|
|
from app.repositories._base_client import api_client
|
|
|
|
class MovieRepository:
|
|
|
|
async def list(self, skip: int = 0, limit: int = 100) -> List[Movie]:
|
|
response = await api_client._request(
|
|
"GET", "/movies/", params={"skip": skip, "limit": limit}
|
|
)
|
|
return [Movie.model_validate(m) for m in response.json()]
|
|
|
|
async def find_by_id(self, movie_id: int) -> Optional[Movie]:
|
|
try:
|
|
response = await api_client._request("GET", f"/movies/{movie_id}")
|
|
return Movie.model_validate(response.json())
|
|
except DALException as e:
|
|
if e.status_code == 404:
|
|
return None
|
|
raise
|
|
|
|
movie_repository = MovieRepository()
|