Add Book model
This commit is contained in:
parent
0dcdec6156
commit
06f1f4d42d
33
models/book.py
Normal file
33
models/book.py
Normal file
@ -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.
|
Loading…
x
Reference in New Issue
Block a user