Removed db stuffs
This commit is contained in:
106
src/resources.py
106
src/resources.py
@@ -6,12 +6,9 @@ import tzlocal
|
||||
from xeger import Xeger
|
||||
from flask_restful import Resource
|
||||
from flask import request, current_app, abort
|
||||
import requests
|
||||
from magic_amqp import magic_amqp
|
||||
from db import db
|
||||
from influxus import influx_db
|
||||
from models import SampleMetadata
|
||||
from schemas import SampleSchema, SampleMetadataSchema
|
||||
from schemas import SampleSchema
|
||||
from requests_opentracing import SessionTracing
|
||||
import opentracing
|
||||
|
||||
@@ -32,7 +29,6 @@ class SampleResource(Resource):
|
||||
"""
|
||||
|
||||
sampleschema = SampleSchema(many=False)
|
||||
samplemetadataschema = SampleMetadataSchema(many=True)
|
||||
|
||||
def post(self):
|
||||
"""
|
||||
@@ -84,14 +80,6 @@ class SampleResource(Resource):
|
||||
|
||||
# It's insane, that you can not set this field in curl
|
||||
|
||||
with opentracing.tracer.start_active_span('sqlalchemy.create'):
|
||||
record = SampleMetadata(
|
||||
device_id=desc['device_id'],
|
||||
device_date=desc['date'],
|
||||
tag=generated_tag
|
||||
)
|
||||
db.session.add(record)
|
||||
|
||||
with opentracing.tracer.start_active_span('uploadToStorageService'):
|
||||
files = {
|
||||
'description': (None, json.dumps({'tag': generated_tag}), 'application/json'),
|
||||
@@ -115,9 +103,6 @@ class SampleResource(Resource):
|
||||
return abort(500,
|
||||
f"Failed to upload sample to storage service. Upstream status: {r.status_code}: {r.text}")
|
||||
|
||||
with opentracing.tracer.start_active_span('sqlalchemy.commit'):
|
||||
db.session.commit()
|
||||
|
||||
# Announce only after the data is successfully committed
|
||||
with opentracing.tracer.start_active_span('publishMessage'):
|
||||
try:
|
||||
@@ -144,91 +129,4 @@ class SampleResource(Resource):
|
||||
]
|
||||
)
|
||||
|
||||
return {"tag": generated_tag}, 200
|
||||
|
||||
def get(self):
|
||||
"""
|
||||
Get all stored items
|
||||
:return:
|
||||
"""
|
||||
with opentracing.tracer.start_active_span('compileQuery'):
|
||||
query = SampleMetadata.query
|
||||
|
||||
## Compile filters ##
|
||||
|
||||
filters = []
|
||||
try:
|
||||
first = int(request.args.get('first'))
|
||||
except (ValueError, TypeError):
|
||||
first = None
|
||||
else:
|
||||
filters.append(
|
||||
SampleMetadata.id >= first
|
||||
)
|
||||
|
||||
try:
|
||||
after = datetime.fromisoformat(request.args.get('after'))
|
||||
except (ValueError, TypeError):
|
||||
after = None
|
||||
else:
|
||||
filters.append(
|
||||
SampleMetadata.timestamp > after
|
||||
)
|
||||
|
||||
try:
|
||||
before = datetime.fromisoformat(request.args.get('before'))
|
||||
except (ValueError, TypeError):
|
||||
before = None
|
||||
else:
|
||||
filters.append(
|
||||
SampleMetadata.timestamp < before
|
||||
)
|
||||
|
||||
if filters:
|
||||
query = query.filter(db.and_(*filters))
|
||||
|
||||
try:
|
||||
limit = int(request.args.get('limit'))
|
||||
except (ValueError, TypeError):
|
||||
limit = None
|
||||
else:
|
||||
query = query.limit(limit)
|
||||
|
||||
## Run query ##
|
||||
count = "count" in request.args
|
||||
tags = {
|
||||
"first": first,
|
||||
"limit": limit,
|
||||
"after": after,
|
||||
"before": before
|
||||
}
|
||||
|
||||
if count:
|
||||
with opentracing.tracer.start_active_span('sqlalchemy.count', tags=tags):
|
||||
rows = query.count()
|
||||
|
||||
return {"count": rows}, 200
|
||||
else:
|
||||
with opentracing.tracer.start_active_span('sqlalchemy.select', tags=tags):
|
||||
samples = query.all()
|
||||
|
||||
return self.samplemetadataschema.dump(list(samples)), 200
|
||||
|
||||
|
||||
class SampleParameterResource(Resource):
|
||||
"""
|
||||
Sample endpoint with parameters
|
||||
"""
|
||||
|
||||
samplemetadataschema = SampleMetadataSchema(many=False)
|
||||
|
||||
def get(self, tag: str):
|
||||
"""
|
||||
Get a specific item
|
||||
:param tag:
|
||||
:return:
|
||||
"""
|
||||
with opentracing.tracer.start_active_span('sqlalchemy.select', tags={"tag": tag}):
|
||||
sample = SampleMetadata.query.filter_by(tag=tag).first_or_404()
|
||||
|
||||
return self.samplemetadataschema.dump(sample), 200
|
||||
return {"tag": generated_tag}, 200
|
||||
Reference in New Issue
Block a user