update to registrations

This commit is contained in:
Gardient
2021-09-22 20:12:06 +03:00
parent 99b090462e
commit 80e4ddf1a8
4 changed files with 8 additions and 8 deletions

View File

@@ -13,7 +13,7 @@ registration_target_assoc = db.Table(
class Registration(SurrogatePK, Model):
__tablename__ = "registration"
name = Column(String(255), unique=True, nullable=False)
routing_key = Column(String(255), nullable=False)
token = Column(String(255), nullable=False)
targets = relationship(
"Target", secondary=registration_target_assoc, backref=db.backref("registrations"))

View File

@@ -6,8 +6,8 @@ from api.target.serializers import TargetSchema
class Registration(Schema):
id = fields.Int()
name = fields.Str()
Token = fields.Str(dump_only=True)
exchange = fields.Nested(TargetSchema, required=True)
token = fields.Str(dump_only=True)
targets = fields.Nested(TargetSchema, required=True, many=True)
registration_schema = Registration()

View File

@@ -33,12 +33,12 @@ def get_list(exchange=None, target=None):
@marshal_with(registration_schema)
def create(name, routing_key, targets):
target_ids = [t.id for t in targets]
xchanges = Target.query.filter(Target.target_exchange_id.in_(target_ids))
if len(xchanges) != len(target_ids):
xchange_ids = [t.id for t in xchanges]
db_targets = Target.query.filter(Target.id.in_(target_ids))
if len(db_targets) != len(targets):
xchange_ids = [t.id for t in db_targets]
not_found = ','.join([f'{t.name}({t.id})' for t in targets if t.id not in xchange_ids])
raise BadRequestException(f"the target {not_found} could not be found")
registration = Registration(name=name, routing_key=routing_key, registration_exchange_id=xchanges.id)
registration = Registration(name=name, token=routing_key, targets=db_targets)
registration.save()
return registration

View File

@@ -21,7 +21,7 @@ def upgrade():
op.create_table('registration',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=255), nullable=False),
sa.Column('routing_key', sa.String(length=255), nullable=False),
sa.Column('token', sa.String(length=255), nullable=False),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name')
)