mirror of
https://github.com/th3r00t/pyShelf.git
synced 2026-04-28 01:59:35 -04:00
Added models for database schema
This commit is contained in:
41
src/backend/lib/models.py
vendored
Normal file
41
src/backend/lib/models.py
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
from typing import Optional
|
||||
from typing_extensions import Annotated
|
||||
from sqlalchemy import func, DateTime, ForeignKey
|
||||
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
||||
import datetime
|
||||
|
||||
timestamp = Annotated[
|
||||
datetime.datetime,
|
||||
mapped_column(nullable=False, server_default=func.CURRENT_TIMESTAMP())
|
||||
]
|
||||
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
pass
|
||||
|
||||
|
||||
class Book(Base):
|
||||
__tablename__ = "books"
|
||||
|
||||
book_id: Mapped[int] = mapped_column(primary_key=True, nullable=False)
|
||||
title: Mapped[str]
|
||||
author: Mapped[Optional[str]]
|
||||
categories: Mapped[Optional[str]]
|
||||
cover: Mapped[Optional[bytes]]
|
||||
pages: Mapped[Optional[int]]
|
||||
progress: Mapped[Optional[float]]
|
||||
file_name: Mapped[str]
|
||||
description: Mapped[Optional[str]]
|
||||
date: Mapped[timestamp]
|
||||
rights: Mapped[Optional[str]]
|
||||
tags: Mapped[Optional[str]]
|
||||
identifier: Mapped[Optional[str]]
|
||||
publisher: Mapped[Optional[str]]
|
||||
|
||||
|
||||
class Collection(Base):
|
||||
__tablename__ = "collections"
|
||||
|
||||
collection: Mapped[str]
|
||||
book_id: Mapped[int] = mapped_column(ForeignKey(Book.book_id))
|
||||
collection_id: Mapped[int] = mapped_column(primary_key=True)
|
||||
Reference in New Issue
Block a user