mirror of
https://github.com/GSA/notifications-api.git
synced 2026-07-25 10:29:34 -04:00
Add data models, dao for inbound_numbers
This commit is contained in:
28
app/dao/inbound_numbers_dao.py
Normal file
28
app/dao/inbound_numbers_dao.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from app import db
|
||||
from app.dao.dao_utils import transactional
|
||||
from app.models import InboundNumber
|
||||
|
||||
|
||||
def dao_get_inbound_numbers():
|
||||
return InboundNumber.query.all()
|
||||
|
||||
|
||||
def dao_get_available_inbound_numbers():
|
||||
return InboundNumber.query.filter(InboundNumber.active, InboundNumber.service_id.is_(None)).all()
|
||||
|
||||
|
||||
def dao_get_inbound_number_for_service(service_id):
|
||||
return InboundNumber.query.filter(InboundNumber.service_id == service_id).all()
|
||||
|
||||
|
||||
@transactional
|
||||
def dao_allocate_inbound_number_to_service(service_id):
|
||||
available_numbers = InboundNumber.query.filter(
|
||||
InboundNumber.active, InboundNumber.service_id.is_(None)).all()
|
||||
|
||||
if len(available_numbers) > 0:
|
||||
available_numbers[0].service_id = service_id
|
||||
|
||||
db.session.add(available_numbers[0])
|
||||
else:
|
||||
raise IndexError('No inbound numbers available')
|
||||
@@ -242,6 +242,18 @@ class Service(db.Model, Versioned):
|
||||
return cls(**fields)
|
||||
|
||||
|
||||
class InboundNumber(db.Model):
|
||||
__tablename__ = "inbound_numbers"
|
||||
|
||||
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
||||
number = db.Column(db.String(11), unique=True, nullable=False)
|
||||
provider = db.Column(db.String(), nullable=False)
|
||||
service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), unique=True, index=True, nullable=True)
|
||||
service = db.relationship('Service')
|
||||
active = db.Column(db.Boolean, index=False, unique=False, nullable=False, default=True)
|
||||
created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
|
||||
|
||||
|
||||
class ServicePermission(db.Model):
|
||||
__tablename__ = "service_permissions"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user