Обновить routers/client.py

This commit is contained in:
Alex55 2025-04-24 18:52:55 +03:00
parent ebf5962926
commit bf84ee2820
1 changed files with 20 additions and 50 deletions

View File

@ -9,10 +9,10 @@ from pydantic import BaseModel
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
import json import json
from model.database import get_async_session, Client from model.database import get_async_session, Client
from utils.clients import upsert_client, del_jobs, add_jobs, get_applied_jobs, get_filtered_jobs, client_list, get_avtopilot, get_delite, get_update from utils.clients import upsert_client, del_jobs, add_jobs, get_applied_jobs, get_filtered_jobs, client_list, get_avtopilot, get_delite, get_update, get_users
from typing import Union from typing import Union
import requests import requests
import ast
import asyncio import asyncio
from types import SimpleNamespace from types import SimpleNamespace
@ -97,47 +97,19 @@ class update(BaseModel):
async def process_client_data( async def process_client_data(
db: Session, db: Session,
data: JsonData, data: JsonData,
user_id: str,
first_name: str,
last_name: str,
email_addr: str,
phone_num: str
): ):
"""Функция для обработки данных в фоне""" """Функция для обработки данных в фоне"""
print(f"Получены данные для {first_name} {last_name} с email {email_addr}")
async_session_maker = async_sessionmaker(bind=db.bind, expire_on_commit=False) print(f"Получены данные для {data.user_id}")
async with async_session_maker() as db1, async_session_maker() as db2:
print("Запускаем задачи для обновления и удаления")
client_task = upsert_client(db1, user_id, first_name, last_name, email_addr, phone_num, str(data.json_data))
del_task = del_jobs(db2, user_id)
client, _ = await asyncio.gather(client_task, del_task)
job_level_values = get_filtered_values('job_level', data.json_data)
job_type_values = get_filtered_values('job_type', data.json_data)
location_type_values = get_filtered_values('location_type', data.json_data)
print("Job Level:", ", ".join(job_level_values)) up = await get_update(db, data)
print("Job Type:", ", ".join(job_type_values))
print("Location Type:", ", ".join(location_type_values))
jobs = await get_filtered_jobs( del_task = await del_jobs(db, data.user_id)
db, user_data = ast.literal_eval(up.json_data)
user_job_titles=["3D Modeler,3D Printing Technician,3D Visualizer"], ads = await add_jobs(db, data.user_id, user_data)
minimum_annual_salary=None, # get_jobs = await get_applied_jobs(db, user_id)
salary_currency=None,
user_location_type=None,
user_locations=["Burnaby, Canada", "Vancouver, Canada", "Toronto, Canada"],
user_levels=["Mid", "Senior", "Manager"],
user_job_types=["Part-Time", "Permanent"]
)
for job in jobs:
print(job.job_title, job.location, job.job_level, job.job_type)
ads = await add_jobs(db, user_id)
get_jobs = await get_applied_jobs(db, user_id)
# [ ]: NOTE Рабоиа в фоне BackgroundTasks process_client_data() # [ ]: NOTE Рабоиа в фоне BackgroundTasks process_client_data()
@router.post("/client/", summary="Обновления json_data и переобновление вакансий", @router.post("/client/", summary="Обновления json_data и переобновление вакансий",
@ -169,18 +141,16 @@ async def client(
email_addr = data.json_data['email_addr'] email_addr = data.json_data['email_addr']
user_id = data.json_data['user_id'] user_id = data.json_data['user_id']
phone_num = data.json_data['phone_num'] phone_num = data.json_data['phone_num']
print(user_id)
data = SimpleNamespace(user_id=user_id)
# Добавляем фоновые задачи # Добавляем фоновые задачи
# background_tasks.add_task( background_tasks.add_task(
# process_client_data, process_client_data,
# db=db, db=db,
# data=data, data=data,
# user_id=user_id,
# first_name=first_name,
# last_name=last_name, )
# email_addr=email_addr,
# phone_num=phone_num
# )
except KeyError as e: except KeyError as e:
raise HTTPException(status_code=400, detail=f"Missing required field: {e}") raise HTTPException(status_code=400, detail=f"Missing required field: {e}")
@ -266,7 +236,7 @@ async def client(
@router.post("/client_update", summary="Обновления клиента", @router.post("/client_update", summary="Обновления клиента",
description="Этот эндпоинт получает ID пользователя, переходит по ссылки что бы получить json_data") description="Этот эндпоинт получает ID пользователя, переходит по ссылки что бы получить json_data")
async def client_update(data: update, x_api_key: str = Header(...), db: Session = Depends(get_async_session)): async def client_update(data: update, x_api_key: str = Header(...), db: Session = Depends(get_async_session)):
print(f"22222222{data}")
if x_api_key != "4545454": if x_api_key != "4545454":
raise HTTPException(status_code=403, detail="Invalid API Key") raise HTTPException(status_code=403, detail="Invalid API Key")