102 lines
2.9 KiB
Python
102 lines
2.9 KiB
Python
from sqlalchemy import create_engine, Column, String, String, ForeignKey, event
|
||
from sqlalchemy.ext.declarative import declarative_base
|
||
from sqlalchemy.orm import relationship, sessionmaker
|
||
from typing import Optional, Annotated
|
||
|
||
c_uuid = Annotated[str, ForeignKey('companies.uuid')]
|
||
|
||
Base = declarative_base()
|
||
|
||
class Company(Base):
|
||
__tablename__ = 'companies'
|
||
|
||
uuid = Column(String, primary_key=True)
|
||
title = Column(String)
|
||
address = Column(String)
|
||
additional_name = Column(String)
|
||
|
||
servers = relationship("Server", back_populates="owner")
|
||
workstations = relationship("Workstation", back_populates="owner")
|
||
fiscals = relationship("Fiscalnik", back_populates="owner")
|
||
|
||
class Server(Base):
|
||
__tablename__ = 'servers'
|
||
|
||
uuid = Column(String, primary_key=True)
|
||
UniqueID = Column(String)
|
||
Teamviewer = Column(String)
|
||
AnyDesk = Column(String)
|
||
rdp = Column(String)
|
||
ip = Column(String)
|
||
CabinetLink = Column(String)
|
||
DeviceName = Column(String)
|
||
|
||
company_uuid = c_uuid
|
||
owner = relationship("Company", back_populates="servers")
|
||
|
||
class Workstation(Base):
|
||
__tablename__ = 'workstations'
|
||
|
||
uuid = Column(String, primary_key=True)
|
||
AnyDesk = Column(String)
|
||
Teamviewer = Column(String)
|
||
DeviceName = Column(String)
|
||
|
||
company_uuid = Column(String, ForeignKey('companies.uuid'))
|
||
owner = relationship("Company", back_populates="workstations")
|
||
|
||
class Fiscalnik(Base):
|
||
__tablename__ = 'fiscals'
|
||
|
||
uuid = Column(String, primary_key=True)
|
||
rnkkt = Column(String)
|
||
LegalName = Column(String)
|
||
FNNumber = Column(String)
|
||
KKTRegDate = Column(String)
|
||
FNExpireDate = Column(String)
|
||
FRSerialNumber = Column(String)
|
||
|
||
company_uuid = Column(String, ForeignKey('companies.uuid'))
|
||
owner = relationship("Company", back_populates="fiscals")
|
||
|
||
# Внешние ключи для связи с вспомогательными таблицами
|
||
ofd_uuid = Column(String, ForeignKey('ofd_names.uuid'))
|
||
ofd = relationship("OFDName")
|
||
model_kkt_uuid = Column(String, ForeignKey('model_kkts.uuid'))
|
||
model_kkt = relationship("ModelKKT")
|
||
srok_fn_uuid = Column(String, ForeignKey('sroki_fns.uuid'))
|
||
srok_fn = relationship("SrokFN")
|
||
|
||
class OFDName(Base):
|
||
__tablename__ = 'ofd_names'
|
||
|
||
uuid = Column(String, primary_key=True)
|
||
title = Column(String)
|
||
code = Column(String)
|
||
def __repr__(self):
|
||
return self.title
|
||
|
||
class ModelKKT(Base):
|
||
__tablename__ = 'model_kkts'
|
||
|
||
uuid = Column(String, primary_key=True)
|
||
title = Column(String)
|
||
code = Column(String)
|
||
def __repr__(self):
|
||
return self.title
|
||
|
||
class SrokFN(Base):
|
||
__tablename__ = 'sroki_fns'
|
||
|
||
uuid = Column(String, primary_key=True)
|
||
title = Column(String)
|
||
code = Column(String)
|
||
def __repr__(self):
|
||
return self.title
|
||
|
||
engine = create_engine('sqlite:///base.db')
|
||
session_factory = sessionmaker(bind=engine)
|
||
session_instance = session_factory()
|
||
|
||
Base.metadata.create_all(engine)
|