Source code for materializationengine.blueprints.client.schemas

from marshmallow import fields, Schema
from marshmallow.validate import Length
import datetime
from flask_marshmallow import Marshmallow
from dynamicannotationdb.models import AnalysisView
ma = Marshmallow()

[docs]class Metadata(Schema): user_id = fields.Str(required=False) description = fields.Str(required=True) reference_table = fields.Str(required=False)
[docs]class SegmentationInfoSchema(Schema): pcg_table_name = fields.Str(required=True)
[docs]class SegmentationTableSchema(SegmentationInfoSchema): table_name = fields.Str(order=0, required=True)
[docs]class CreateTableSchema(SegmentationTableSchema): metadata = fields.Nested( Metadata, required=True, example={"description": "my description"} )
[docs]class GetDeleteAnnotationSchema(SegmentationInfoSchema): annotation_ids = fields.List(fields.Int, required=True)
[docs]class PostPutAnnotationSchema(SegmentationInfoSchema): annotations = fields.List(fields.Dict, required=True)
[docs]class SegmentationDataSchema(Schema): pcg_table_name = fields.Str(required=True) segmentations = fields.List(fields.Dict, required=True)
[docs]class V2QuerySchema(Schema): table = fields.Str(required=True) timestamp = fields.AwareDateTime( default_timezone=datetime.timezone.utc, required=True ) join_tables = fields.List( fields.List(fields.Str), required=False, ) filter_in_dict = fields.Dict() filter_notin_dict = fields.Dict() filter_equal_dict = fields.Dict() filter_spatial_dict = fields.Dict() filter_regex_dict = fields.Dict(required=False) select_columns = fields.Dict() offset = fields.Integer() limit = fields.Integer() suffixes = fields.Dict() desired_resolution = fields.List( fields.Float, validate=Length(equal=3), required=False )
[docs]class SimpleQuerySchema(Schema): filter_in_dict = fields.Dict() filter_notin_dict = fields.Dict() filter_equal_dict = fields.Dict() filter_spatial_dict = fields.Dict() filter_regex_dict = fields.Dict(required=False) select_columns = fields.List(fields.Str) offset = fields.Integer() limit = fields.Integer() desired_resolution = fields.List( fields.Float, validate=Length(equal=3), required=False )
[docs]class ComplexQuerySchema(Schema): tables = fields.List( fields.List(fields.Str, validate=Length(equal=2)), required=True ) filter_in_dict = fields.Dict() filter_notin_dict = fields.Dict() filter_equal_dict = fields.Dict() filter_spatial_dict = fields.Dict() filter_regex_dict = fields.Dict(required=False) select_columns = fields.List(fields.Str) select_column_map = fields.Dict() offset = fields.Integer() limit = fields.Integer() suffixes = fields.List(fields.Str) suffix_map = fields.Dict() desired_resolution = fields.List( fields.Float, validate=Length(equal=3), required=False )
[docs]class AnalysisViewSchema(ma.SQLAlchemyAutoSchema):
[docs] class Meta: model = AnalysisView