Added Books Book Collections Collection Endpoints

This commit is contained in:
th3r00t
2023-03-12 16:08:03 -04:00
parent af3fa3eec8
commit d0e71f4df2
7 changed files with 302 additions and 51 deletions

View File

@@ -1,6 +1,6 @@
from typing import Optional
from typing_extensions import Annotated
from sqlalchemy import func, DateTime, ForeignKey
from sqlalchemy import func, ForeignKey
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
import datetime
@@ -11,10 +11,14 @@ timestamp = Annotated[
class Base(DeclarativeBase):
"""Base class for all models."""
pass
class Book(Base):
"""Book model."""
__tablename__ = "books"
book_id: Mapped[int] = mapped_column(primary_key=True, nullable=False)
@@ -33,7 +37,10 @@ class Book(Base):
publisher: Mapped[Optional[str]]
class Collection(Base):
"""Collection model."""
__tablename__ = "collections"
collection: Mapped[str]

View File

@@ -165,7 +165,7 @@ class Storage:
_collections.append(_p)
self.config.logger.info("Finished making collections.")
def get_books(self, collection=None):
def get_books(self, collection=None, skip=None, limit=None):
"""Get books from database.
Parameters
@@ -180,11 +180,43 @@ class Storage:
session = Session(self.engine)
if collection:
_result = session.execute(
select(Book).join(Collection).where(
Collection.collection == collection
)
).all()
select(Book).join(Collection)
.where(Collection.collection_id == collection)
.offset(skip).limit(limit)).all()
else:
_result = session.execute(select(Book)).all()
_result = session.execute(
select(Book).offset(skip).limit(limit)).all()
session.close()
return _result
def get_book(self, book_id):
"""Get book from database.
Parameters
----------
book_id : int
Book ID to filter by.
Returns
-------
_result : ScalarResult Object
"""
session = Session(self.engine)
_result = session.execute(select(Book).where(Book.book_id == book_id)).first()
session.close()
return _result
def get_collections(self):
"""Get collections from database.
Returns
-------
_result : ScalarResult Object
"""
session = Session(self.engine)
_result = session.execute(
select(Collection)
.join(Book)
).all()
session.close()
return _result