Initial commit: Базовая структура сайта
This commit is contained in:
14
backend/app/models/__init__.py
Executable file
14
backend/app/models/__init__.py
Executable file
@@ -0,0 +1,14 @@
|
||||
from app.models.service_db import (
|
||||
AppUser,
|
||||
AppRole,
|
||||
LeaveEvent,
|
||||
AppConfiguration
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"AppUser",
|
||||
"AppRole",
|
||||
"LeaveEvent",
|
||||
"AppConfiguration"
|
||||
]
|
||||
|
||||
57
backend/app/models/service_db.py
Executable file
57
backend/app/models/service_db.py
Executable file
@@ -0,0 +1,57 @@
|
||||
"""
|
||||
Модели для служебной базы данных
|
||||
"""
|
||||
from sqlalchemy import Column, Integer, String, Date, ForeignKey, DateTime, Boolean
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.sql import func
|
||||
from app.core.database import Base
|
||||
|
||||
|
||||
class AppRole(Base):
|
||||
"""Роли пользователей сервиса"""
|
||||
__tablename__ = "app_roles"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
role_name = Column(String(50), unique=True, nullable=False)
|
||||
|
||||
users = relationship("AppUser", back_populates="role")
|
||||
|
||||
|
||||
class AppUser(Base):
|
||||
"""Пользователи сервиса дашбордов"""
|
||||
__tablename__ = "app_users"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
login = Column(String(100), unique=True, nullable=False, index=True)
|
||||
hashed_password = Column(String(255), nullable=False)
|
||||
role_id = Column(Integer, ForeignKey("app_roles.id"), nullable=False)
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
is_active = Column(Boolean, default=True)
|
||||
|
||||
role = relationship("AppRole", back_populates="users")
|
||||
leave_events = relationship("LeaveEvent", back_populates="user")
|
||||
|
||||
|
||||
class LeaveEvent(Base):
|
||||
"""События отпусков и больничных"""
|
||||
__tablename__ = "leave_events"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
user_id = Column(Integer, ForeignKey("app_users.id"), nullable=False)
|
||||
start_date = Column(Date, nullable=False)
|
||||
end_date = Column(Date, nullable=False)
|
||||
leave_type = Column(String(50), nullable=False) # 'Отпуск', 'Больничный'
|
||||
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||
|
||||
user = relationship("AppUser", back_populates="leave_events")
|
||||
|
||||
|
||||
class AppConfiguration(Base):
|
||||
"""Конфигурация сервиса (нечувствительные данные)"""
|
||||
__tablename__ = "app_configuration"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
key = Column(String(100), unique=True, nullable=False, index=True)
|
||||
value = Column(String(500), nullable=True)
|
||||
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
||||
|
||||
Reference in New Issue
Block a user