/
tegdif
/
cism
Обзор
Документация
Войти
/
tegdif
/
cism
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/models/task.py
61 строка
2 KB
tegdif
first_commit
28 июл 2026, 08:54
28 июл 2026, 08:54
8ecbd07
Код
Авторство
О чём код?
import uuid from datetime import datetime, timezone from typing import Optional from sqlalchemy import String, Text, DateTime, Enum as SAEnum, Uuid, Index from sqlalchemy.orm import Mapped, mapped_column from src.core.database import Base import enum class TaskPriority(str, enum.Enum): """Уровни приоритета задач.""" LOW = "LOW" MEDIUM = "MEDIUM" HIGH = "HIGH" class TaskStatus(str, enum.Enum): """Состояния жизненного цикла задачи.""" NEW = "NEW" PENDING = "PENDING" IN_PROGRESS = "IN_PROGRESS" COMPLETED = "COMPLETED" FAILED = "FAILED" CANCELLED = "CANCELLED" class Task(Base): """Модель задачи в БД.""" __tablename__ = "tasks" id: Mapped[uuid.UUID] = mapped_column( Uuid, primary_key=True, default=uuid.uuid4 ) title: Mapped[str] = mapped_column(String(255), nullable=False) description: Mapped[Optional[str]] = mapped_column(Text, nullable=True, default="") priority: Mapped[TaskPriority] = mapped_column( SAEnum(TaskPriority, name="taskpriority", create_constraint=True), nullable=False, default=TaskPriority.MEDIUM, ) status: Mapped[TaskStatus] = mapped_column( SAEnum(TaskStatus, name="taskstatus", create_constraint=True), nullable=False, default=TaskStatus.NEW, ) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), nullable=False, default=lambda: datetime.now(timezone.utc) ) started_at: Mapped[Optional[datetime]] = mapped_column(DateTime(timezone=True), nullable=True) completed_at: Mapped[Optional[datetime]] = mapped_column(DateTime(timezone=True), nullable=True) result: Mapped[Optional[str]] = mapped_column(Text, nullable=True) error_info: Mapped[Optional[str]] = mapped_column(Text, nullable=True) __table_args__ = ( Index("ix_tasks_status", "status"), Index("ix_tasks_priority", "priority"), Index("ix_tasks_created_at", "created_at"), )