From bc9ff7405f61764cd966e05497b14c05544bda12 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 17 Oct 2024 12:13:24 -0700 Subject: [PATCH] fix update --- app/dao/inbound_numbers_dao.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/app/dao/inbound_numbers_dao.py b/app/dao/inbound_numbers_dao.py index 18d08c999..a86ba530e 100644 --- a/app/dao/inbound_numbers_dao.py +++ b/app/dao/inbound_numbers_dao.py @@ -1,4 +1,4 @@ -from sqlalchemy import select +from sqlalchemy import and_, select, update from app import db from app.dao.dao_utils import autocommit @@ -35,9 +35,7 @@ def dao_set_inbound_number_to_service(service_id, inbound_number): @autocommit def dao_set_inbound_number_active_flag(service_id, active): - stmt = select(InboundNumber).filter( - InboundNumber.service_id == service_id - ) + stmt = select(InboundNumber).filter(InboundNumber.service_id == service_id) inbound_number = db.session.execute(stmt).scalars().first() inbound_number.active = active @@ -46,9 +44,18 @@ def dao_set_inbound_number_active_flag(service_id, active): @autocommit def dao_allocate_number_for_service(service_id, inbound_number_id): - updated = InboundNumber.query.filter_by( - id=inbound_number_id, active=True, service_id=None - ).update({"service_id": service_id}) - if not updated: + stmt = ( + update(InboundNumber) + .where( + and_( + InboundNumber.id == inbound_number_id, # noqa + InboundNumber.active == True, # noqa + InboundNumber.service_id == None, # noqa + ) + ) + .values({"service_id": service_id}) + ) + result = db.session.execute(stmt) + if result.rowcount == 0: raise Exception("Inbound number: {} is not available".format(inbound_number_id)) - return InboundNumber.query.get(inbound_number_id) + return db.session.get(InboundNumber, inbound_number_id)