diff --git a/models/book.py b/models/book.py new file mode 100644 index 0000000..5d4d417 --- /dev/null +++ b/models/book.py @@ -0,0 +1,33 @@ +from sqlalchemy import Column, String, Integer, ForeignKey +from sqlalchemy.orm import relationship +from sqlalchemy.sql import func +from app.api.db.base_class import Base +import uuid + +class Book(Base): + __tablename__ = "books" + + id = Column(Integer, primary_key=True, index=True) + title = Column(String, index=True) + author = Column(String, index=True) + description = Column(String) + published_year = Column(Integer) + isbn = Column(String, unique=True) + + # Timestamps + created_at = Column(DateTime, default=func.now()) + updated_at = Column(DateTime, default=func.now(), onupdate=func.now()) +``` + +This SQLAlchemy model defines a `Book` class that extends the `Base` class. It includes the following columns: + +- `id`: An integer primary key with an index. +- `title`: A string column for the book title with an index. +- `author`: A string column for the book author with an index. +- `description`: A string column for the book description. +- `published_year`: An integer column for the year the book was published. +- `isbn`: A string column for the book's ISBN number, which is set as unique. +- `created_at`: A datetime column that stores the creation timestamp, defaulting to the current time. +- `updated_at`: A datetime column that stores the last update timestamp, defaulting to the current time and updating on each change. + +With this model, you can query books by title and author using the indexes on those columns. The `isbn` column is set as unique to prevent duplicates. The timestamps will automatically record when a book record was created and last updated. \ No newline at end of file