add 'job_title' column to workers table
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing

This commit is contained in:
2025-08-26 22:04:13 +03:00
parent 173e8959ea
commit 20aefeb110
4 changed files with 16 additions and 10 deletions

View File

@@ -1,5 +1,4 @@
from .database_engine import async_session_ 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_", "job_title"]
__all__ = ["Worker", "Component", "Order", "async_session_"]

View File

@@ -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.dialects.postgresql import ENUM
from sqlalchemy.orm import relationship, DeclarativeBase from sqlalchemy.orm import relationship, DeclarativeBase
status_enum = ENUM('Выполнено', 'В процессе', 'Создано', 'Ожидание комплектующих', name='status') status_enum = ENUM('Выполнено', 'В процессе', 'Создано', 'Ожидание комплектующих', name='status')
job_title = ENUM('Начальник цеха', 'Мастер', 'Сборщик', name='job_title')
class Base(DeclarativeBase): class Base(DeclarativeBase):
@@ -25,7 +26,8 @@ class Worker(Base):
telegram_id = Column(BIGINT, unique=True, nullable=False) telegram_id = Column(BIGINT, unique=True, nullable=False)
name = Column(String, nullable=False) name = Column(String, nullable=False)
email = Column(String, nullable=True) 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()) created_at = Column(Date, server_default=func.now())
updated_at = Column(Date, onupdate=func.now()) updated_at = Column(Date, onupdate=func.now())

View File

@@ -62,8 +62,7 @@ async def orders_menu(message: Message):
async def get_order_worker_id(callback: CallbackQuery, state: FSMContext): async def get_order_worker_id(callback: CallbackQuery, state: FSMContext):
await state.set_state(OrderForm.worker_id) await state.set_state(OrderForm.worker_id)
async with async_session_() as session: async with async_session_() as session:
async with session.begin(): result = await session.execute(select(Worker.name, Worker.telegram_id).where(Worker.job_title == "Сборщик"))
result = await session.execute(select(Worker.name, Worker.telegram_id))
workers = result.all() workers = result.all()
await callback.message.answer("Введите сборщика ответственного за заказ:", await callback.message.answer("Введите сборщика ответственного за заказ:",
reply_markup=create_inline_kb( reply_markup=create_inline_kb(

View File

@@ -1,15 +1,21 @@
CREATE TYPE job_title AS ENUM ('Начальник цеха','Мастер','Сборщик');
CREATE TYPE status AS ENUM ('Выполнено','В процессе','Создано','Ожидание комплектующих');
CREATE TABLE workers CREATE TABLE workers
( (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
telegram_id BIGINT UNIQUE NOT NULL, telegram_id BIGINT UNIQUE NOT NULL,
name VARCHAR NOT NULL, name VARCHAR NOT NULL,
email VARCHAR(50), email VARCHAR(50),
phone_number VARCHAR(20) NOT NULL, phone_number VARCHAR(20),
job_title job_title default 'Сборщик',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP updated_at TIMESTAMP
); );
CREATE TYPE status AS ENUM ('Выполнено','В процессе','Создано','Ожидание комплектующих');
CREATE TABLE orders CREATE TABLE orders
( (