routing and model __init__ updates
This commit is contained in:
@@ -1,12 +1,19 @@
|
|||||||
from api.database import (Model, SurrogatePK, db,
|
|
||||||
Column, reference_col, relationship)
|
|
||||||
from sqlalchemy import String
|
from sqlalchemy import String
|
||||||
|
|
||||||
|
from api.database import (Model, SurrogatePK, db,
|
||||||
|
Column, reference_col, relationship)
|
||||||
from api.target_exchange.models import TargetExchange
|
from api.target_exchange.models import TargetExchange
|
||||||
|
|
||||||
|
|
||||||
class Target(SurrogatePK, Model):
|
class Target(SurrogatePK, Model):
|
||||||
__tablename__ = "target"
|
__tablename__ = "target"
|
||||||
name = Column(String(255), unique=True, nullable=False)
|
name = Column(String(255), unique=True, nullable=False)
|
||||||
routing_key = Column(String(255), nullable=False)
|
routing_key = Column(String(255), nullable=False)
|
||||||
target_exchange_id = reference_col(TargetExchange.__tablename__, nullable=False)
|
target_exchange_id = reference_col(TargetExchange.__tablename__, nullable=False)
|
||||||
exchange = relationship(TargetExchange.__name__, backref=db.backref('targets'))
|
exchange = relationship(TargetExchange.__name__, backref=db.backref("targets"))
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super(Target, self).__init__(**kwargs)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return '<%s(%d):%r->%r>' % (Target.__name__, self.id, self.routing_key, self.exchange.name)
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
from marshmallow import Schema, fields
|
from marshmallow import Schema, fields
|
||||||
|
|
||||||
from api.target_exchange.serializers import TargetExchangeSchema
|
from api.target_exchange.serializers import TargetExchangeSchema
|
||||||
|
|
||||||
|
|
||||||
class TargetSchema(Schema):
|
class TargetSchema(Schema):
|
||||||
id = fields.Int()
|
id = fields.Int()
|
||||||
name = fields.Str()
|
name = fields.Str()
|
||||||
routing_key = fields.Str(required=True)
|
routing_key = fields.Str(required=True)
|
||||||
exchange = fields.Nested(TargetExchangeSchema)
|
exchange = fields.Nested(TargetExchangeSchema)
|
||||||
|
|
||||||
|
|
||||||
target_schema = TargetSchema()
|
target_schema = TargetSchema()
|
||||||
targets_schema = TargetSchema(many=True)
|
targets_schema = TargetSchema(many=True)
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
from flask import Blueprint
|
from flask import Blueprint
|
||||||
from flask_jwt_extended import jwt_required
|
|
||||||
from flask_apispec import use_kwargs, marshal_with, doc
|
from flask_apispec import use_kwargs, marshal_with, doc
|
||||||
|
from flask_jwt_extended import jwt_required
|
||||||
from marshmallow import fields
|
from marshmallow import fields
|
||||||
|
|
||||||
from api.exceptions import NotFoundException
|
from api.exceptions import NotFoundException, BadRequestException
|
||||||
from api.target_exchange.models import TargetExchange
|
from api.target_exchange.models import TargetExchange
|
||||||
|
|
||||||
from .models import Target
|
from .models import Target
|
||||||
from .serializers import target_schema, targets_schema
|
from .serializers import target_schema, targets_schema
|
||||||
|
|
||||||
@@ -29,18 +28,21 @@ def get_list(exchange=None):
|
|||||||
@jwt_required()
|
@jwt_required()
|
||||||
@use_kwargs(target_schema)
|
@use_kwargs(target_schema)
|
||||||
@marshal_with(target_schema)
|
@marshal_with(target_schema)
|
||||||
def create(name):
|
def create(name, routing_key, exchange):
|
||||||
target = Target(name=name)
|
xchange = TargetExchange.get_by_id(exchange.id)
|
||||||
|
if xchange is None:
|
||||||
|
raise BadRequestException(f"the exchange {exchange.name}({exchange.id}) could not be found")
|
||||||
|
target = Target(name=name, routing_key=routing_key, target_exchange_id=xchange.id)
|
||||||
target.save()
|
target.save()
|
||||||
return target
|
return target
|
||||||
|
|
||||||
|
|
||||||
@doc(tags=['Target'])
|
@doc(tags=['Target'])
|
||||||
@blueprint.route('/<id>', methods=['GET'])
|
@blueprint.route('/<target_id>', methods=['GET'])
|
||||||
@jwt_required()
|
@jwt_required()
|
||||||
@marshal_with(target_schema)
|
@marshal_with(target_schema)
|
||||||
def get_by_id(id):
|
def get_by_id(target_id: int):
|
||||||
target_exchange = Target.get_by_id(id)
|
target_exchange = Target.get_by_id(target_id)
|
||||||
if target_exchange is not None:
|
if target_exchange is not None:
|
||||||
return target_exchange
|
return target_exchange
|
||||||
else:
|
else:
|
||||||
@@ -48,12 +50,12 @@ def get_by_id(id):
|
|||||||
|
|
||||||
|
|
||||||
@doc(tags=['Target'])
|
@doc(tags=['Target'])
|
||||||
@blueprint.route('/<id>', methods=['PUT'])
|
@blueprint.route('/<target_id>', methods=['PUT'])
|
||||||
@jwt_required()
|
@jwt_required()
|
||||||
@use_kwargs(target_schema)
|
@use_kwargs(target_schema)
|
||||||
@marshal_with(target_schema)
|
@marshal_with(target_schema)
|
||||||
def update(id, **kwargs):
|
def update(target_id, **kwargs):
|
||||||
target_exchange = Target.get_by_id(id)
|
target_exchange = Target.get_by_id(target_id)
|
||||||
if target_exchange is not None:
|
if target_exchange is not None:
|
||||||
return target_exchange.update(**kwargs)
|
return target_exchange.update(**kwargs)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
from api.database import (Model, SurrogatePK, db,
|
from api.database import (Model, SurrogatePK, db,
|
||||||
Column, reference_col, relationship)
|
Column)
|
||||||
|
|
||||||
|
|
||||||
class TargetExchange(SurrogatePK, Model):
|
class TargetExchange(SurrogatePK, Model):
|
||||||
__tablename__ = "target-exchange"
|
__tablename__ = "target-exchange"
|
||||||
name = Column(db.String(255), unique=True, nullable=False)
|
name = Column(db.String(255), unique=True, nullable=False)
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super(TargetExchange, self).__init__(**kwargs)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def ensure_created(name):
|
def ensure_created(name):
|
||||||
if TargetExchange.query.filter_by(name=name).first() is None:
|
if TargetExchange.query.filter_by(name=name).first() is None:
|
||||||
|
|||||||
@@ -30,11 +30,11 @@ def create(name):
|
|||||||
|
|
||||||
|
|
||||||
@doc(tags=['TargetExchange'])
|
@doc(tags=['TargetExchange'])
|
||||||
@blueprint.route('/<id>', methods=['GET'])
|
@blueprint.route('/<exchange_id>', methods=['GET'])
|
||||||
@jwt_required()
|
@jwt_required()
|
||||||
@marshal_with(target_exchange_schema)
|
@marshal_with(target_exchange_schema)
|
||||||
def get_by_id(id):
|
def get_by_id(exchange_id):
|
||||||
target_exchange = TargetExchange.get_by_id(id)
|
target_exchange = TargetExchange.get_by_id(exchange_id)
|
||||||
if target_exchange is not None:
|
if target_exchange is not None:
|
||||||
return target_exchange
|
return target_exchange
|
||||||
else:
|
else:
|
||||||
@@ -42,12 +42,12 @@ def get_by_id(id):
|
|||||||
|
|
||||||
|
|
||||||
@doc(tags=['TargetExchange'])
|
@doc(tags=['TargetExchange'])
|
||||||
@blueprint.route('/<id>', methods=['PUT'])
|
@blueprint.route('/<exchange_id>', methods=['PUT'])
|
||||||
@jwt_required()
|
@jwt_required()
|
||||||
@use_kwargs(target_exchange_schema)
|
@use_kwargs(target_exchange_schema)
|
||||||
@marshal_with(target_exchange_schema)
|
@marshal_with(target_exchange_schema)
|
||||||
def update(id, **kwargs):
|
def update(exchange_id, **kwargs):
|
||||||
target_exchange = TargetExchange.get_by_id(id)
|
target_exchange = TargetExchange.get_by_id(exchange_id)
|
||||||
if target_exchange is not None:
|
if target_exchange is not None:
|
||||||
return target_exchange.update(**kwargs)
|
return target_exchange.update(**kwargs)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user