From 35f8393a592ceb932b534643ca3ffa21217124b3 Mon Sep 17 00:00:00 2001 From: th3r00t Date: Thu, 7 Aug 2025 19:13:08 +0000 Subject: [PATCH] Fixed mobile menu --- src/backend/lib/models.py | 19 ++ src/backend/lib/storage.py | 17 -- src/frontend/templates/navigation.html | 55 +++++- uv.lock | 256 +++++++++++++++++++++++++ 4 files changed, 327 insertions(+), 20 deletions(-) diff --git a/src/backend/lib/models.py b/src/backend/lib/models.py index d85b0b7..da164b2 100644 --- a/src/backend/lib/models.py +++ b/src/backend/lib/models.py @@ -68,3 +68,22 @@ class BookCollection(Base): # Relationships book = relationship("Book", back_populates="book_collections") collection = relationship("Collection", back_populates="book_collections") + +class User(Base): + """User model.""" + + __tablename__ = "User" + + id: Mapped[int] = mapped_column(primary_key=True, nullable=False) + username: Mapped[str] = mapped_column(unique=True, nullable=False) + password: Mapped[str] = mapped_column(nullable=False) + email: Mapped[Optional[str]] = mapped_column(unique=True, nullable=True) + date_joined: Mapped[timestamp] = mapped_column( + nullable=False, server_default=func.CURRENT_TIMESTAMP() + ) + last_login: Mapped[Optional[timestamp]] = mapped_column( + nullable=True, server_default=None + ) + is_active: Mapped[bool] = mapped_column(nullable=False, default=True) + is_admin: Mapped[bool] = mapped_column(nullable=False, default=False) + is_superuser: Mapped[bool] = mapped_column(nullable=False, default=False) diff --git a/src/backend/lib/storage.py b/src/backend/lib/storage.py index 23733e8..24716b4 100644 --- a/src/backend/lib/storage.py +++ b/src/backend/lib/storage.py @@ -271,23 +271,6 @@ class Storage: session.close() return _result - # def fuzzy_search_books(self, query: str, limit: int = 30): - # """Fuzzy search for books by title, author, or tags.""" - # with Session(self.engine) as session: - # books = session.execute(select(Book)).scalars().all() - # - # # Prepare a combined text field - # book_choices = {book.id: f"{book.title or ''} {book.author or ''} {book.tags or ''}" - # for book in books} - # - # # Use RapidFuzz to score - # results = process.extract(query, book_choices, scorer=fuzz.WRatio, limit=limit) - # - # # results = [(matched_text, score, book_id), ...] - # book_ids = [book_id for (_, score, book_id) in results if score > 50] # threshold - # books = [b for b in books if b.id in book_ids] - # return books - def parse_advanced_query(self, query: str) -> dict: """Parse a query like 'title:"dark tower" author:king tags:fantasy'""" diff --git a/src/frontend/templates/navigation.html b/src/frontend/templates/navigation.html index 2405479..0b28c52 100644 --- a/src/frontend/templates/navigation.html +++ b/src/frontend/templates/navigation.html @@ -15,7 +15,7 @@ const collections = {{ collections|collections_tojson }};