From 20aefeb110a1e9f75af90d875bf370e9c355fe12 Mon Sep 17 00:00:00 2001 From: ronis_0505 Date: Tue, 26 Aug 2025 22:04:13 +0300 Subject: [PATCH] add 'job_title' column to workers table --- app/database/__init__.py | 5 ++--- app/database/models.py | 6 ++++-- app/handlers/orders.py | 5 ++--- init_schemes.sql | 10 ++++++++-- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/database/__init__.py b/app/database/__init__.py index 12985fc..2156a30 100644 --- a/app/database/__init__.py +++ b/app/database/__init__.py @@ -1,5 +1,4 @@ from .database_engine import async_session_ -from .models import Worker,Component, Order +from .models import Worker, Component, Order, job_title - -__all__ = ["Worker", "Component", "Order", "async_session_"] \ No newline at end of file +__all__ = ["Worker", "Component", "Order", "async_session_", "job_title"] diff --git a/app/database/models.py b/app/database/models.py index b9e2814..cdae7ed 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -1,8 +1,9 @@ -from sqlalchemy import Column, Integer, String, Date, ForeignKey, func, Null,BIGINT +from sqlalchemy import Column, Integer, String, Date, ForeignKey, func, Null, BIGINT from sqlalchemy.dialects.postgresql import ENUM from sqlalchemy.orm import relationship, DeclarativeBase status_enum = ENUM('Выполнено', 'В процессе', 'Создано', 'Ожидание комплектующих', name='status') +job_title = ENUM('Начальник цеха', 'Мастер', 'Сборщик', name='job_title') class Base(DeclarativeBase): @@ -25,7 +26,8 @@ class Worker(Base): telegram_id = Column(BIGINT, unique=True, nullable=False) name = Column(String, nullable=False) email = Column(String, nullable=True) - phone_number = Column(String, nullable=False) + phone_number = Column(String, default=None) + job_title = Column(job_title, default='Сборщик'), created_at = Column(Date, server_default=func.now()) updated_at = Column(Date, onupdate=func.now()) diff --git a/app/handlers/orders.py b/app/handlers/orders.py index fb4c89e..ed32ad6 100644 --- a/app/handlers/orders.py +++ b/app/handlers/orders.py @@ -62,9 +62,8 @@ async def orders_menu(message: Message): async def get_order_worker_id(callback: CallbackQuery, state: FSMContext): await state.set_state(OrderForm.worker_id) async with async_session_() as session: - async with session.begin(): - result = await session.execute(select(Worker.name, Worker.telegram_id)) - workers = result.all() + result = await session.execute(select(Worker.name, Worker.telegram_id).where(Worker.job_title == "Сборщик")) + workers = result.all() await callback.message.answer("Введите сборщика ответственного за заказ:", reply_markup=create_inline_kb( **{f"set_worker_in_order_{tg_id}": name for name, tg_id in workers})) diff --git a/init_schemes.sql b/init_schemes.sql index 67b3a35..c5c6681 100644 --- a/init_schemes.sql +++ b/init_schemes.sql @@ -1,15 +1,21 @@ + +CREATE TYPE job_title AS ENUM ('Начальник цеха','Мастер','Сборщик'); +CREATE TYPE status AS ENUM ('Выполнено','В процессе','Создано','Ожидание комплектующих'); + + CREATE TABLE workers ( id SERIAL PRIMARY KEY, telegram_id BIGINT UNIQUE NOT NULL, name VARCHAR NOT NULL, email VARCHAR(50), - phone_number VARCHAR(20) NOT NULL, + phone_number VARCHAR(20), + job_title job_title default 'Сборщик', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP ); -CREATE TYPE status AS ENUM ('Выполнено','В процессе','Создано','Ожидание комплектующих'); + CREATE TABLE orders (