from datetime import datetime from enum import IntEnum from typing import Optional from sqlalchemy import Column, Integer, String, DateTime, Enum, Index from pydantic import BaseModel from app.models.base_model import Base class GroupStatus(IntEnum): NO = 1 OFF = 0 class GroupInfoModel(Base): __tablename__ = "group_info" group_id = Column(Integer, primary_key=True, index=True) group_name = Column(String(255), unique=True, nullable=False, index=True) group_description = Column(String(255)) group_status = Column(Integer, nullable=False, default=1) created_at = Column(DateTime, default=datetime.now()) updated_at = Column(DateTime, default=datetime.now(), onupdate=datetime.now()) def to_dict(self): return { 'id': self.group_id, 'name': self.group_name, 'group_description': self.group_description, 'group_status': self.group_status, 'created_at': self.created_at.strftime("%Y.%m.%d %H:%M") } class UserGroupModel(Base): __tablename__ = "user_group" id = Column(Integer, primary_key=True) group_id = Column(Integer, nullable=False) user_id = Column(Integer, nullable=False) Index('ix_user_group_id', group_id, user_id, unique=True) class GroupData(BaseModel): id: Optional[int] = None group_name: Optional[str] = "" group_description: Optional[str] = "" group_status: Optional[int] = None class GroupUsers(BaseModel): id: int user_list: list