/
DaniilSk
/
DesignLab
Обзор
Документация
Войти
/
DaniilSk
/
DesignLab
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/app/models/article.py
28 строк
1 KB
Даниил
chore(repo): initialize Design Lab project
13 июл 2026, 01:14
13 июл 2026, 01:14
8b87f71
Код
Авторство
О чём код?
import uuid from sqlalchemy import ForeignKey, Integer, String, UniqueConstraint from sqlalchemy.dialects.postgresql import JSONB, UUID from sqlalchemy.orm import Mapped, mapped_column, relationship from app.models.base import Base, TimestampMixin, UUIDMixin class Article(Base, UUIDMixin, TimestampMixin): __tablename__ = "articles" event_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("events.id", ondelete="CASCADE"), unique=True) status: Mapped[str] = mapped_column(String(32), default="published", nullable=False) blocks: Mapped[list["ArticleBlock"]] = relationship(back_populates="article", cascade="all, delete-orphan") class ArticleBlock(Base, UUIDMixin, TimestampMixin): __tablename__ = "article_blocks" __table_args__ = (UniqueConstraint("article_id", "display_order", name="uq_article_block_order"),) article_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("articles.id", ondelete="CASCADE"), nullable=False) type: Mapped[str] = mapped_column(String(32), nullable=False) content: Mapped[dict] = mapped_column(JSONB, nullable=False) settings: Mapped[dict] = mapped_column(JSONB, default=dict, nullable=False) display_order: Mapped[int] = mapped_column(Integer, nullable=False) article: Mapped[Article] = relationship(back_populates="blocks")