mirror of
https://github.com/th3r00t/pyShelf.git
synced 2026-04-28 01:59:35 -04:00
Added Books Book Collections Collection Endpoints
This commit is contained in:
9
src/backend/lib/models.py
vendored
9
src/backend/lib/models.py
vendored
@@ -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]
|
||||
|
||||
44
src/backend/lib/storage.py
vendored
44
src/backend/lib/storage.py
vendored
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user