modified_db #2
18
db/crud.py
18
db/crud.py
@ -42,6 +42,24 @@ async def update(model_class: Type[T], id: int, updated_data: Dict[str, Any]) ->
|
|||||||
await session.commit()
|
await session.commit()
|
||||||
return await get_by_id(model_class, id)
|
return await get_by_id(model_class, id)
|
||||||
|
|
||||||
|
# Надо переписать/раасмотреть update
|
||||||
|
async def update_exp(model_class: Type[T], id: int, updated_data: Dict[str, Any]) -> Optional[T]:
|
||||||
|
async with async_session_postgres() as session:
|
||||||
|
async with session.begin(): # Явная транзакция
|
||||||
|
stmt = (
|
||||||
|
update_(model_class)
|
||||||
|
.where(model_class.id == id)
|
||||||
|
.values(**updated_data)
|
||||||
|
.returning(model_class) # Возвращаем обновленный объект
|
||||||
|
)
|
||||||
|
result = await session.execute(stmt)
|
||||||
|
updated_instance = result.scalars().first()
|
||||||
|
|
||||||
|
if not updated_instance:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return updated_instance # Возвращаем сразу обновленный объект
|
||||||
|
|
||||||
|
|
||||||
async def delete(model_class: Type[T], id: int) -> bool:
|
async def delete(model_class: Type[T], id: int) -> bool:
|
||||||
async with async_session_postgres() as session:
|
async with async_session_postgres() as session:
|
||||||
|
@ -54,3 +54,4 @@ async def save_experiment_to_db(df: pd.DataFrame):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Ошибка при сохранении данных: {e}")
|
print(f"Ошибка при сохранении данных: {e}")
|
||||||
raise HTTPException(status_code=500, detail=f"Ошибка при сохранении данных: {e}")
|
raise HTTPException(status_code=500, detail=f"Ошибка при сохранении данных: {e}")
|
||||||
|
|
||||||
|
@ -130,14 +130,21 @@ async def process_and_save_experiment_data(id: int):
|
|||||||
o2=o2
|
o2=o2
|
||||||
)
|
)
|
||||||
|
|
||||||
# Обновляем ExperimentParameters, чтобы сохранить связи
|
# Обновляем ExperimentParameters
|
||||||
experiment.load_id = load_params.id
|
experiment = await update_exp(
|
||||||
experiment.recycling_id = recycling_params.id
|
ExperimentParameters,
|
||||||
|
id=experiment.id,
|
||||||
|
updated_data={
|
||||||
|
"load_id": load_params.id,
|
||||||
|
"recycling_id": recycling_params.id
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"message": "Данные успешно обработаны и сохранены.",
|
"message": "Данные успешно обработаны и сохранены.",
|
||||||
"load_parameters": load_params,
|
"load_parameters": load_params,
|
||||||
"recycling_parameters": recycling_params
|
"recycling_parameters": recycling_params,
|
||||||
|
"updated_experiment_parameters": experiment
|
||||||
}
|
}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
Loading…
Reference in New Issue
Block a user