Get
Takes dataset entity unique identifier and arguments to pinpoint target row, selection that specifies
which attributes and relations selections should be returned. Each entity will have generic get query
in camelCase entity name prefixed by "get
". For example datasetfollowing get methods are
generated:
#
Datasets Get Methods- getDataset(euuid:UUID, name:String)
- getDatasetVersion(euuid:UUID)
- getDatasetRelation(euuid:UUID)
- getDatasetEntity(euuid:UUID, name:String)
- getDatasetEntityAttribute(euuid:UUID)
Entity records can be located by specifying euuid or if unique key/s are defined for that entity than those argument fields are are also valid (getDataset, getDatasetEntity). Lets make some queries. I.E. we'll query Dataset Entity to return Dataset Entity record.
{ getDatasetEntity(name:"Dataset Entity") { configuration euuid height modified_on name position type width }}
And response should be:
{ "data": { "getDatasetEntity": { "configuration": "{\"~:constraints\":{\"~:unique\":[[\"~u48631c43-1a57-4ed2-9d8e-57a286142a23\"]]}}", "euuid": "a0d304a7-afe3-4d9f-a2e1-35e174bb5d5b", "height": 152.7505645751953, "modified_on": "2020-07-09T08:26:25Z", "name": "Dataset Entity", "position": { "x": -880, "y": 630 }, "type": "STRONG", "width": 178.97463989257812 } }}
"Wou, this is so cool. What else can I do?
"
It is possible to pull data from related entities by specifying directed relation label and fields. Let's pull all attribute name and types and all dataset versions where this entity is used.
{ getDatasetEntity(name:"Dataset Entity") { configuration euuid height modified_on name position type width attributes { name type } dataset_versions { name modified_by { name } modified_on } }}
#
Response{ "data": { "getDatasetEntity": { "configuration": "{\"~:constraints\":{\"~:unique\":[[\"~u48631c43-1a57-4ed2-9d8e-57a286142a23\"]]}}", "euuid": "a0d304a7-afe3-4d9f-a2e1-35e174bb5d5b", "height": 152.7505645751953, "modified_on": "2020-07-24T22:30:30Z", "name": "Dataset Entity", "position": { "x": -880, "y": 630 }, "type": "STRONG", "width": 178.97463989257812, "attributes": [ { "name": "Name", "type": "string" }, { "name": "Width", "type": "float" }, { "name": "Height", "type": "float" }, { "name": "Position", "type": "json" }, { "name": "Type", "type": "enum" }, { "name": "Configuration", "type": "transit" } ], "dataset_versions": [ { "name": "1", "modified_by": { "name": "rgersak" }, "modified_on": "2020-07-24T22:30:28Z" } ] } }}
"I'm actually crying now... Are you saying that I can just ask what I wan't and it will be provided.
It's like best religion ever!
"
It is possible to pull data for related entites by referencing labels on modeled Relations This is not restricted to one model. ALL models are combined in one big data model with all entities and relations reconciled and available through single GraphQL endpoint. Everything is connected!
"Don't play smart with me! Is there anything else?
"
To narrow subselection search, user can set parameters for relation. Lets try to find all attributes that are of type string or float.
#
Query{ getDatasetEntity(name:"Dataset Entity") { name type attributes(_where:{_or:[{type:{_eq:string}} {type:{_eq:float}}]} _order_by:[{name:desc}]) { name type } }}
#
Response{ "data": { "getDatasetEntity": { "name": "Dataset Entity", "type": "STRONG", "attributes": [ { "name": "Width", "type": "float" }, { "name": "Name", "type": "string" }, { "name": "Height", "type": "float" } ] } }}
User can specify limit or offset, as well as order_by. More about this in Search.