Files

43 lines
1.8 KiB
Python

"""Модели запросов (заявок)."""
from datetime import datetime
from sqlalchemy import DateTime, ForeignKey, String, Text, func
from sqlalchemy.orm import Mapped, mapped_column, relationship
from app.db.session import Base
from app.models.enums import RequestStatus, RequestType
from app.models.types import enum_col
class Request(Base):
__tablename__ = "requests"
id: Mapped[int] = mapped_column(primary_key=True)
type: Mapped[RequestType] = mapped_column(enum_col(RequestType))
user_id: Mapped[int | None] = mapped_column(ForeignKey("users.id"))
region_id: Mapped[int | None] = mapped_column(ForeignKey("regions.id"))
subject: Mapped[str | None] = mapped_column(String(300))
body: Mapped[str | None] = mapped_column(Text)
status: Mapped[RequestStatus] = mapped_column(
enum_col(RequestStatus), default=RequestStatus.NEW
)
assigned_to: Mapped[int | None] = mapped_column(ForeignKey("users.id"))
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
)
comments: Mapped[list["RequestComment"]] = relationship(back_populates="request")
class RequestComment(Base):
__tablename__ = "request_comments"
id: Mapped[int] = mapped_column(primary_key=True)
request_id: Mapped[int] = mapped_column(ForeignKey("requests.id", ondelete="CASCADE"))
author_id: Mapped[int | None] = mapped_column(ForeignKey("users.id"))
body: Mapped[str] = mapped_column(Text)
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
request: Mapped[Request] = relationship(back_populates="comments")