Files
notifications-api/app/dao/inbound_numbers_dao.py

54 lines
1.6 KiB
Python
Raw Normal View History

2024-10-17 11:24:10 -07:00
from sqlalchemy import select
2024-10-17 10:02:26 -07:00
from app import db
from app.dao.dao_utils import autocommit
from app.models import InboundNumber
def dao_get_inbound_numbers():
2024-10-17 10:02:26 -07:00
stmt = select(InboundNumber).order_by(InboundNumber.updated_at)
2024-10-17 11:40:04 -07:00
return db.session.execute(stmt).scalars().all()
def dao_get_available_inbound_numbers():
2024-10-17 10:02:26 -07:00
stmt = select(InboundNumber).filter(
2023-08-29 14:54:30 -07:00
InboundNumber.active, InboundNumber.service_id.is_(None)
2024-10-17 10:02:26 -07:00
)
2024-10-17 11:40:04 -07:00
return db.session.execute(stmt).scalars().all()
def dao_get_inbound_number_for_service(service_id):
2024-10-17 11:48:20 -07:00
stmt = select(InboundNumber).filter(InboundNumber.service_id == service_id)
return db.session.execute(stmt).scalars().first()
2017-08-10 17:51:47 +01:00
def dao_get_inbound_number(inbound_number_id):
2024-10-17 11:48:20 -07:00
stmt = select(InboundNumber).filter(InboundNumber.id == inbound_number_id)
return db.session.execute(stmt).scalars().first()
2017-08-10 17:51:47 +01:00
@autocommit
2017-08-04 16:05:03 +01:00
def dao_set_inbound_number_to_service(service_id, inbound_number):
inbound_number.service_id = service_id
db.session.add(inbound_number)
@autocommit
def dao_set_inbound_number_active_flag(service_id, active):
2024-10-17 11:24:10 -07:00
inbound_number = InboundNumber.query.filter(
InboundNumber.service_id == service_id
).first()
inbound_number.active = active
db.session.add(inbound_number)
@autocommit
def dao_allocate_number_for_service(service_id, inbound_number_id):
2024-10-17 11:24:10 -07:00
updated = InboundNumber.query.filter_by(
id=inbound_number_id, active=True, service_id=None
).update({"service_id": service_id})
if not updated:
raise Exception("Inbound number: {} is not available".format(inbound_number_id))
2024-10-17 11:24:10 -07:00
return InboundNumber.query.get(inbound_number_id)