/
tenisaname
/
Test_example_docker
Обзор
Документация
Войти
/
tenisaname
/
Test_example_docker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/app/models.py
56 строк
3 KB
etenkin
first_commit
10 июн 2026, 10:41
10 июн 2026, 10:41
85dbc50
Код
Авторство
О чём код?
from datetime import date, datetime from sqlalchemy import Integer, String, Date, DateTime, ForeignKey, Numeric, UniqueConstraint, CheckConstraint from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.orm import Mapped, mapped_column, relationship from .database import Base class Department(Base): __tablename__ = "departments" id: Mapped[int] = mapped_column(Integer, primary_key=True) code: Mapped[str] = mapped_column(String(50), nullable=False, unique=True) name: Mapped[str] = mapped_column(String(255), nullable=False) created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow) links: Mapped[list["SPPDepartmentLink"]] = relationship(back_populates="department") class SPPNode(Base): __tablename__ = "spp_nodes" id: Mapped[int] = mapped_column(Integer, primary_key=True) code: Mapped[str] = mapped_column(String(50), nullable=False) name: Mapped[str] = mapped_column(String(255), nullable=False) parent_id: Mapped[int | None] = mapped_column(Integer, ForeignKey("spp_nodes.id"), nullable=True) level: Mapped[int] = mapped_column(Integer, nullable=False) status: Mapped[str] = mapped_column(String(20), nullable=False, default="active") valid_from: Mapped[date] = mapped_column(Date, nullable=False) valid_to: Mapped[date | None] = mapped_column(Date, nullable=True) created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow) links: Mapped[list["SPPDepartmentLink"]] = relationship(back_populates="spp_node") class SPPDepartmentLink(Base): __tablename__ = "spp_department_links" __table_args__ = (UniqueConstraint("spp_node_id", "department_id"),) id: Mapped[int] = mapped_column(Integer, primary_key=True) spp_node_id: Mapped[int] = mapped_column(Integer, ForeignKey("spp_nodes.id", ondelete="CASCADE")) department_id: Mapped[int] = mapped_column(Integer, ForeignKey("departments.id", ondelete="CASCADE")) spp_node: Mapped["SPPNode"] = relationship(back_populates="links") department: Mapped["Department"] = relationship(back_populates="links") class CalculationResult(Base): __tablename__ = "calculation_results" id: Mapped[int] = mapped_column(Integer, primary_key=True) session_id: Mapped[str] = mapped_column(String(255), nullable=False, index=True) created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow) status: Mapped[str] = mapped_column(String(50), nullable=False, default="active") spp_version_date: Mapped[date] = mapped_column(Date, nullable=False) total_amount: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False) distribution_data: Mapped[dict] = mapped_column(JSONB, nullable=False)