/
Pepegator
/
task-api
Обзор
Документация
Войти
/
Pepegator
/
task-api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
lab3-client
pythonProject2/database.py
49 строк
2 KB
Pol136
create docs
30 дек 2025, 11:01
30 дек 2025, 11:01
d230838
Код
Авторство
О чём код?
from sqlalchemy import create_engine, Column, Integer, String, DateTime, Boolean, ForeignKey, Text 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")