Added models for database schema

This commit is contained in:
th3r00t
2022-11-13 00:56:21 -05:00
parent fdf7a94061
commit ece13b3492

41
src/backend/lib/models.py vendored Normal file
View 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)