/
DisVic
/
task-tracker
Обзор
Документация
Войти
/
DisVic
/
task-tracker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
lab2
app/models.py
62 строки
3 KB
DisappearedVictory
code done
27 дек 2025, 13:32
27 дек 2025, 13:32
213e05e
Код
Авторство
О чём код?
from sqlalchemy import String, Text, ForeignKey, UniqueConstraint, BigInteger, Integer, DateTime, JSON from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.sql import func from app.db import Base class User(Base): __tablename__ = "users" id: Mapped[int] = mapped_column(BigInteger, primary_key=True) email: Mapped[str] = mapped_column(String, unique=True, index=True) password_hash: Mapped[str] = mapped_column(String) created_at: Mapped[str] = mapped_column(DateTime(timezone=True), server_default=func.now()) class Project(Base): __tablename__ = "projects" id: Mapped[int] = mapped_column(BigInteger, primary_key=True) owner_id: Mapped[int] = mapped_column(ForeignKey("users.id"), index=True) name: Mapped[str] = mapped_column(String) created_at: Mapped[str] = mapped_column(DateTime(timezone=True), server_default=func.now()) class ProjectMember(Base): __tablename__ = "project_members" project_id: Mapped[int] = mapped_column(ForeignKey("projects.id", ondelete="CASCADE"), primary_key=True) user_id: Mapped[int] = mapped_column(ForeignKey("users.id", ondelete="CASCADE"), primary_key=True) role: Mapped[str] = mapped_column(String) class Task(Base): __tablename__ = "tasks" id: Mapped[int] = mapped_column(BigInteger, primary_key=True) project_id: Mapped[int] = mapped_column(ForeignKey("projects.id", ondelete="CASCADE"), index=True) title: Mapped[str] = mapped_column(String) description: Mapped[str | None] = mapped_column(Text, nullable=True) status: Mapped[str] = mapped_column(String) assignee_id: Mapped[int | None] = mapped_column(ForeignKey("users.id"), nullable=True) priority: Mapped[str | None] = mapped_column(String, nullable=True) created_at: Mapped[str] = mapped_column(DateTime(timezone=True), server_default=func.now()) class Comment(Base): __tablename__ = "comments" id: Mapped[int] = mapped_column(BigInteger, primary_key=True) task_id: Mapped[int] = mapped_column(ForeignKey("tasks.id", ondelete="CASCADE"), index=True) author_id: Mapped[int] = mapped_column(ForeignKey("users.id")) text: Mapped[str] = mapped_column(Text) created_at: Mapped[str] = mapped_column(DateTime(timezone=True), server_default=func.now()) class IdempotencyKey(Base): __tablename__ = "idempotency_keys" __table_args__ = (UniqueConstraint("user_id", "idem_key"),) id: Mapped[int] = mapped_column(BigInteger, primary_key=True) user_id: Mapped[int] = mapped_column(ForeignKey("users.id"), index=True) idem_key: Mapped[str] = mapped_column(String) request_hash: Mapped[str] = mapped_column(String) state: Mapped[str] = mapped_column(String) # in_progress|completed response_code: Mapped[int | None] = mapped_column(Integer, nullable=True) # ИСПРАВЛЕНИЕ ЗДЕСЬ: добавлен тип JSON response_body: Mapped[dict | None] = mapped_column(JSON, nullable=True) created_at: Mapped[str] = mapped_column(DateTime(timezone=True), server_default=func.now()) class RateLimit(Base): __tablename__ = "rate_limits" key: Mapped[str] = mapped_column(String, primary_key=True) count: Mapped[int] = mapped_column(Integer) window_start: Mapped[str] = mapped_column(DateTime(timezone=True))