/
Pepegator
/
task-api
Обзор
Документация
Войти
/
Pepegator
/
task-api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
lab4
pythonProject2/database.py
71 строка
2 KB
Pol136
add rabbitmq
30 дек 2025, 17:44
30 дек 2025, 17:44
7c8d717
Код
Авторство
О чём код?
from sqlalchemy import create_engine, Column, Integer, String, DateTime, ForeignKey, JSON, Text, Boolean from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, relationship from datetime import datetime from config import settings engine = create_engine( settings.database_url, connect_args={"check_same_thread": False} if "sqlite" in settings.database_url else {} ) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() def get_db(): db = SessionLocal() try: yield db finally: db.close() class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) username = Column(String(50), unique=True, index=True) email = Column(String(100), unique=True, index=True) hashed_password = Column(String(255)) is_active = Column(Boolean, default=True) created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) tasks = relationship("Task", back_populates="owner", cascade="all, delete-orphan") class Task(Base): __tablename__ = "tasks" id = Column(Integer, primary_key=True, index=True) owner_id = Column(Integer, ForeignKey("users.id"), index=True) title = Column(String(200), index=True) description = Column(Text, nullable=True) status = Column(String(20), default="todo", index=True) priority = Column(String(20), default="medium") created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) completed_at = Column(DateTime, nullable=True) owner = relationship("User", back_populates="tasks") class ProcessedRequest(Base): __tablename__ = "processed_requests" id = Column(String(36), primary_key=True) response_data = Column(JSON) status_code = Column(Integer) created_at = Column(DateTime, default=datetime.utcnow, index=True) expires_at = Column(DateTime, index=True) # Для TTL class MessageError(Base): __tablename__ = "message_errors" id = Column(Integer, primary_key=True, index=True) request_id = Column(String(36), index=True) error_type = Column(String(50)) error_message = Column(Text) retry_count = Column(Integer, default=0) sent_to_dlq = Column(Boolean, default=False) created_at = Column(DateTime, default=datetime.utcnow, index=True)