fastapi-svelte-template/backend/todo/models/todos.py

27 lines
1.2 KiB
Python
Raw Permalink Normal View History

"""This module defines the SQL data model for todo items."""
from sqlalchemy import Column, ForeignKey, Integer, String, DateTime, Boolean
from sqlalchemy.sql.functions import now
from sqlalchemy.orm import relationship
from todo.database.engine import Base
from todo.models.users import User
class TodoItem(Base):
"""Model for the todo_items table."""
__tablename__ = "todo_items"
id = Column('id', Integer, primary_key=True, autoincrement=True, index=True)
title = Column('title', String, nullable=False, index=True)
description = Column('description', String, nullable=False)
done = Column('done', Boolean, nullable=False, default=False, index=True)
created = Column('created', DateTime(timezone=True), nullable=False, server_default=now())
updated = Column('updated', DateTime(timezone=True), nullable=False, server_default=now(), onupdate=now(), index=True)
finished = Column('finished', DateTime(timezone=True), nullable=True, default=None)
user_id = Column('user_id', Integer, ForeignKey('users.id', ondelete="CASCADE"), nullable=False, index=True)
user = relationship(User, back_populates="todo_items", uselist=False)