Spaces:
Sleeping
Sleeping
File size: 1,117 Bytes
911e744 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import uuid
from datetime import date, datetime
from typing import Optional
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy import Column, ForeignKey, UniqueConstraint
from sqlmodel import SQLModel, Field, Relationship
class JournalEntry(SQLModel, table=True):
__tablename__ = "journal_entries"
__table_args__ = (
UniqueConstraint("user_id", "journal_date", name="unique_user_date_journal"),
)
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
user_id: uuid.UUID = Field(
sa_column=Column(
UUID(as_uuid=True),
ForeignKey("users.id", ondelete="CASCADE"),
nullable=False,
)
)
title: str = Field(nullable=False)
content: str = Field(nullable=False)
journal_date: date = Field(nullable=False)
created_at: datetime = Field(default_factory=datetime.now)
updated_at: datetime = Field(
default_factory=datetime.now,
sa_column_kwargs={"onupdate": datetime.now},
nullable=False,
)
user: Optional["Users"] = Relationship(back_populates="journal_entries")
|