Files
ronis_0505 5662d8877a
Some checks failed
continuous-integration/drone Build is failing
MVP
2025-07-27 22:17:28 +03:00

90 lines
2.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from sqlalchemy import Column, Integer, String, Date, ForeignKey, func, Null
from sqlalchemy.dialects.postgresql import ENUM
from sqlalchemy.orm import relationship, DeclarativeBase
status_enum = ENUM('Выполнено', 'В процессе', 'Создано', 'Ожидание комплектующих', name='status')
class Base(DeclarativeBase):
pass
class Worker(Base):
"""
id SERIAL PRIMARY KEY,
telegram_id INTEGER UNIQUE NOT NULL,
name VARCHAR NOT NULL,
email VARCHAR(50),
phone_number VARCHAR(20) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP
"""
__tablename__ = "workers"
id = Column(Integer, primary_key=True, autoincrement=True)
telegram_id = Column(Integer, unique=True, nullable=False)
name = Column(String, nullable=False)
email = Column(String, nullable=True)
phone_number = Column(String, nullable=False)
created_at = Column(Date, server_default=func.now())
updated_at = Column(Date, onupdate=func.now())
class Order(Base):
"""
id SERIAL PRIMARY KEY,
name VARCHAR,
worker_id INTEGER REFERENCES workers (id),
status_id status DEFAULT 'Создано',
counterparty VARCHAR(50),
customer VARCHAR NOT NULL,
commencement_work DATE,
end_work DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
description VARCHAR DEFAULT NULL
"""
__tablename__ = "orders"
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String)
worker_id = Column(Integer, ForeignKey('workers.telegram_id'), nullable=False)
status_id = Column(status_enum)
counterparty = Column(String)
customer = Column(String, nullable=False)
commencement_work = Column(Date, nullable=True)
end_work = Column(Date, nullable=True)
created_at = Column(Date, server_default=func.now())
description = Column(String, default=Null)
user = relationship("Worker", backref="orders")
class Component(Base):
"""
id SERIAL PRIMARY KEY,
name VARCHAR NOT NULL,
description VARCHAR NULL
"""
__tablename__ = "components"
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
description = Column(String, default=Null)
class OrderComponent(Base):
"""
id SERIAL PRIMARY KEY,
order_id INTEGER REFERENCES orders (id),
component_id INTEGER REFERENCES components (id),
quantity INTEGER DEFAULT 1
"""
__tablename__ = "order_components"
id = Column(Integer, primary_key=True)
order_id = Column(Integer, ForeignKey('orders.id'))
component_id = Column(Integer, ForeignKey('components.id'))
quantity = Column(Integer, default=1)
order = relationship("Order", backref="order_components")
component = relationship("Component", backref="order_components")