This commit is contained in:
2024-03-03 07:22:42 +03:00
parent 804b658c6e
commit d870f1cffe
27 changed files with 303 additions and 78 deletions

2
models/__init__.py Normal file
View File

@@ -0,0 +1,2 @@
from .auth import *
from .deal import *

12
models/auth.py Normal file
View File

@@ -0,0 +1,12 @@
from sqlalchemy import Column, Integer, BigInteger, String, Boolean
from models.base import BaseModel
class User(BaseModel):
__tablename__ = 'users'
id = Column(Integer, autoincrement=True, primary_key=True, index=True)
telegram_id = Column(BigInteger, nullable=False, index=True)
phone_number = Column(String)
is_admin = Column(Boolean, nullable=False, default=False)

3
models/base.py Normal file
View File

@@ -0,0 +1,3 @@
from sqlalchemy.orm import declarative_base
BaseModel = declarative_base()

41
models/deal.py Normal file
View File

@@ -0,0 +1,41 @@
from enum import IntEnum, unique
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from models.base import BaseModel
@unique
class DealStatus(IntEnum):
AWAITING_ACCEPTANCE = 0
PACKAGING = 1
AWAITING_SHIPMENT = 2
AWAITING_PAYMENT = 3
COMPLETED = 4
CANCELLED = 5
class Deal(BaseModel):
__tablename__ = 'deals'
id = Column(Integer, autoincrement=True, primary_key=True, index=True)
name = Column(String, nullable=False, comment='Название сделки')
created_at = Column(DateTime, nullable=False, comment='Дата создания')
current_status = Column(Integer, nullable=False, comment='Текущий статус')
status_history = relationship('DealStatusHistory', back_populates='deal')
class DealStatusHistory(BaseModel):
__tablename__ = 'deals_status_history'
id = Column(Integer, autoincrement=True, primary_key=True, index=True)
deal_id = Column(Integer, ForeignKey('deals.id'), nullable=False, comment='ID сделки')
deal = relationship('Deal', back_populates='status_history')
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
user = relationship('User')
changed_at = Column(DateTime, nullable=False, comment='Дата и время когда произошла смена статуса')
from_status = Column(Integer, nullable=False, comment='Предыдущий статус')
to_status = Column(Integer, nullable=False, comment='Новый статус')