This commit is contained in:
2024-03-19 09:01:46 +03:00
parent aafa1050a7
commit 6ba041a839
23 changed files with 369 additions and 39 deletions

View File

@@ -1,3 +1,9 @@
from sqlalchemy.orm import configure_mappers
from .auth import *
from .deal import *
from .client import *
from .service import *
from .secondary import *
configure_mappers()

View File

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

View File

@@ -1,5 +1,5 @@
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, BigInteger
from sqlalchemy.orm import relationship
from sqlalchemy.orm import relationship, backref
from models import BaseModel
@@ -17,7 +17,7 @@ class ClientDetails(BaseModel):
id = Column(Integer, autoincrement=True, primary_key=True, index=True)
client_id = Column(Integer, ForeignKey('clients.id'), unique=True, nullable=False, comment='ID клиента')
client = relationship('Client', backref='details', uselist=False)
client = relationship('Client', backref=backref('details', uselist=False))
address = Column(String)
phone_number = Column(String)

View File

@@ -1,9 +1,10 @@
from enum import IntEnum, unique
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Boolean
from sqlalchemy.orm import relationship
from models.base import BaseModel
from models.secondary import deal_services
@unique
@@ -29,6 +30,11 @@ class Deal(BaseModel):
status_history = relationship('DealStatusHistory', back_populates='deal', cascade="all, delete-orphan")
is_deleted = Column(Boolean, nullable=False, server_default='0', default=False, comment='Удалена')
is_completed = Column(Boolean, nullable=False, server_default='0', default=False, comment='Завершена')
services = relationship('Service', secondary=deal_services)
class DealStatusHistory(BaseModel):
__tablename__ = 'deals_status_history'

10
models/secondary.py Normal file
View File

@@ -0,0 +1,10 @@
from sqlalchemy import Table, Column, Integer, ForeignKey
from models.base import metadata
deal_services = Table(
'deal_services', metadata,
Column('deal_id', Integer, ForeignKey('deals.id')),
Column('service_id', Integer, ForeignKey('services.id')),
Column('quantity', Integer)
)

21
models/service.py Normal file
View File

@@ -0,0 +1,21 @@
from sqlalchemy import Column, Integer, String, ForeignKey, Double
from sqlalchemy.orm import relationship
from models import BaseModel
class Service(BaseModel):
__tablename__ = 'services'
id = Column(Integer, autoincrement=True, primary_key=True, index=True)
name = Column(String, nullable=False, comment='Название услуги')
category_id = Column(Integer, ForeignKey('service_categories.id'), nullable=False, comment='ID категории услуги')
category = relationship('ServiceCategory')
price = Column(Double, nullable=False, comment='Стоимость услуги')
class ServiceCategory(BaseModel):
__tablename__ = 'service_categories'
id = Column(Integer, autoincrement=True, primary_key=True, index=True)
name = Column(String, nullable=False)