def get_variable(*, variable_key: str) -> Response: """Get a variables by key""" try: var = Variable.get(variable_key) except KeyError: raise NotFound("Variable not found") return variable_schema.dump({"key": variable_key, "val": var})
def get_variable(*, variable_key: str, session: Session = NEW_SESSION) -> Response: """Get a variable by key""" var = session.query(Variable).filter(Variable.key == variable_key) if not var.count(): raise NotFound("Variable not found") return variable_schema.dump(var.first())
def post_variables() -> Response: """Create a variable""" try: data = variable_schema.load(request.json) except ValidationError as err: raise BadRequest("Invalid Variable schema", detail=str(err.messages)) Variable.set(data["key"], data["val"]) return variable_schema.dump(data)
def patch_variable(*, variable_key: str, update_mask: UpdateMask = None) -> Response: """Update a variable by key""" try: data = variable_schema.load(get_json_request_dict()) except ValidationError as err: raise BadRequest("Invalid Variable schema", detail=str(err.messages)) if data["key"] != variable_key: raise BadRequest("Invalid post body", detail="key from request body doesn't match uri parameter") if update_mask: if "key" in update_mask: raise BadRequest("key is a ready only field") if "value" not in update_mask: raise BadRequest("No field to update") Variable.set(data["key"], data["val"]) return variable_schema.dump(data)