fix data base

This commit is contained in:
2026-02-27 15:37:15 +05:00
parent 335db59c9c
commit d37c255994
27 changed files with 1372 additions and 11 deletions

85
route/holland_crud.py Normal file
View File

@@ -0,0 +1,85 @@
from fastapi import APIRouter, HTTPException
from typing import Optional
import uuid
from bd import Settings
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from bd.tables.poll import Poll
from bd.tables.question import Question
from bd.tables.choice import Choice
router = APIRouter(tags=["polls"], prefix="/polls")
PAIRS = [
("инженер-техник", "инженер-контролер"),
("вязальщик", "санитарный врач"),
("повар", "наборщик"),
("фотограф", "зав. магазином"),
("чертежник", "дизайнер"),
("философ", "психиатр"),
("ученый-химик", "бухгалтер"),
("редактор научного журнала", "адвокат"),
("лингвист", "переводчик художественной литературы"),
("педиатр", "статистик"),
("организатор воспитательной работы", "председатель профсоюза"),
("спортивный врач", "фельетонист"),
("нотариус", "снабженец"),
("перфоратор", "карикатурист"),
("политический деятель", "писатель"),
("садовник", "метеоролог"),
("водитель", "медсестра"),
("инженер-электрик", "секретарь-машинистка"),
("маляр", "художник по металлу"),
("биолог", "главный врач"),
("телеоператор", "режиссер"),
("гидролог", "ревизор"),
("зоолог", "зоотехник"),
("математик", "архитектор"),
("работник ИДН", "счетовод"),
("учитель", "милиционер"),
("воспитатель", "художник по керамике"),
("экономист", "заведующий отделом"),
("корректор", "критик"),
("завхоз", "директор"),
("радиоинженер", "специалист по ядерной физике"),
("водопроводчик", "наборщик"),
("агроном", "председатель сельхозкооператива"),
("закройщик-модельер", "декоратор"),
("археолог", "эксперт"),
("работник музея", "консультант"),
("ученый", "актер"),
("логопед", "стенографист"),
("врач", "дипломат"),
("главный бухгалтер", "директор"),
("поэт", "психолог"),
("архивариус", "скульптор"),
]
def get_session():
settings = Settings()
engine = create_engine(settings.DATABASE_URL_syncpg, future=True)
return sessionmaker(bind=engine, future=True)
@router.post("/holland", status_code=201)
def create_holland_poll(author_id: Optional[str] = None):
Session = get_session()
with Session() as session:
poll = Poll(title="Тест Д. Голланда — определение типа личности",
description="Тест Д. Голланда: выберите из каждой пары предпочитаемую профессию.")
# polls are anonymous; ignore author_id
session.add(poll)
for idx, (a, b) in enumerate(PAIRS, start=1):
q = Question(text=f"Вариант {idx}", position=idx, type="single", poll=poll)
session.add(q)
ch1 = Choice(question=q, text=f"а) {a}", position=1)
ch2 = Choice(question=q, text=f"б) {b}", position=2)
session.add(ch1)
session.add(ch2)
session.commit()
session.refresh(poll)
return {"id": str(poll.id), "questions": len(poll.questions)}