Updating schema.
This commit is contained in:
parent
16872d3688
commit
82c7c089cb
|
@ -457,9 +457,28 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"query": {
|
"query": {
|
||||||
"string": {
|
"logicalOperator": "all",
|
||||||
"column": "value"
|
"onEmptyFilter": "none",
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"logicalOperator": "any",
|
||||||
|
"filters": [
|
||||||
|
{
|
||||||
|
"operator": "string",
|
||||||
|
"field": "name",
|
||||||
|
"value": "John"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"operator": "range",
|
||||||
|
"field": "age",
|
||||||
|
"value": {
|
||||||
|
"low": 18,
|
||||||
|
"high": 100
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"primaryDisplay": "name"
|
"primaryDisplay": "name"
|
||||||
}
|
}
|
||||||
|
@ -490,9 +509,28 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"query": {
|
"query": {
|
||||||
"string": {
|
"logicalOperator": "all",
|
||||||
"column": "value"
|
"onEmptyFilter": "none",
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"logicalOperator": "any",
|
||||||
|
"filters": [
|
||||||
|
{
|
||||||
|
"operator": "string",
|
||||||
|
"field": "name",
|
||||||
|
"value": "John"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"operator": "range",
|
||||||
|
"field": "age",
|
||||||
|
"value": {
|
||||||
|
"low": 18,
|
||||||
|
"high": 100
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"primaryDisplay": "name"
|
"primaryDisplay": "name"
|
||||||
}
|
}
|
||||||
|
@ -2126,89 +2164,158 @@
|
||||||
"description": "A column used to display rows from this view - usually used when rendered in tables."
|
"description": "A column used to display rows from this view - usually used when rendered in tables."
|
||||||
},
|
},
|
||||||
"query": {
|
"query": {
|
||||||
|
"description": "Search parameters for view",
|
||||||
|
"type": "object",
|
||||||
|
"required": [],
|
||||||
|
"properties": {
|
||||||
|
"logicalOperator": {
|
||||||
|
"description": "When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"onEmptyFilter": {
|
||||||
|
"description": "If no filters match, should the view return all rows, or no rows.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"none"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"groups": {
|
||||||
|
"description": "A grouping of filters to be applied.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"allOr": {
|
"logicalOperator": {
|
||||||
"type": "boolean",
|
"description": "When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
"description": "Specifies that a row should be returned if it satisfies any of the specified options, rather than requiring it to fulfill all the search parameters. This defaults to false, meaning AND logic will be used."
|
|
||||||
},
|
|
||||||
"string": {
|
|
||||||
"type": "object",
|
|
||||||
"example": {
|
|
||||||
"columnName1": "value",
|
|
||||||
"columnName2": "value"
|
|
||||||
},
|
|
||||||
"description": "A map of field name to the string to search for, this will look for rows that have a value starting with the string value.",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "The value to search for in the column."
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filters": {
|
||||||
|
"description": "A list of filters to apply",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"operator": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The type of search operation which is being performed.",
|
||||||
|
"enum": [
|
||||||
|
"equal",
|
||||||
|
"notEqual",
|
||||||
|
"empty",
|
||||||
|
"notEmpty",
|
||||||
|
"fuzzy",
|
||||||
|
"string",
|
||||||
|
"contains",
|
||||||
|
"notContains",
|
||||||
|
"containsAny",
|
||||||
|
"oneOf",
|
||||||
|
"range"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The field in the view to perform the search on."
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"description": "The value to search for - the type will depend on the operator in use.",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "array"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"fuzzy": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for a sub-string within a string column, e.g. searching for 'dib' will match 'Budibase'."
|
|
||||||
},
|
|
||||||
"range": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches within a range, the format of this must be in the format of an object with a \"low\" and \"high\" property.",
|
|
||||||
"example": {
|
|
||||||
"columnName1": {
|
|
||||||
"low": 10,
|
|
||||||
"high": 20
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"equal": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows that have a column value that is exactly the value set."
|
|
||||||
},
|
|
||||||
"notEqual": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for any row which does not contain the specified column value."
|
|
||||||
},
|
|
||||||
"empty": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value.",
|
|
||||||
"example": {
|
|
||||||
"columnName1": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notEmpty": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows which have the specified column."
|
|
||||||
},
|
|
||||||
"oneOf": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]."
|
|
||||||
},
|
|
||||||
"contains": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for a value, or set of values in array column types (such as a multi-select). If an array of search options is provided then it must match all.",
|
|
||||||
"example": {
|
|
||||||
"arrayColumn": [
|
|
||||||
"a",
|
|
||||||
"b"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"notContains": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "The logical inverse of contains. Only works on array column types. If an array of values is passed, the row must not match any of them to be returned in the response.",
|
|
||||||
"example": {
|
|
||||||
"arrayColumn": [
|
|
||||||
"a",
|
|
||||||
"b"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"containsAny": {
|
"groups": {
|
||||||
|
"description": "A grouping of filters to be applied.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "As with the contains search, only works on array column types and searches for any of the provided values when given an array.",
|
"properties": {
|
||||||
"example": {
|
"logicalOperator": {
|
||||||
"arrayColumn": [
|
"description": "When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
"a",
|
"type": "string",
|
||||||
"b"
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"any"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"filters": {
|
||||||
|
"description": "A list of filters to apply",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"operator": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The type of search operation which is being performed.",
|
||||||
|
"enum": [
|
||||||
|
"equal",
|
||||||
|
"notEqual",
|
||||||
|
"empty",
|
||||||
|
"notEmpty",
|
||||||
|
"fuzzy",
|
||||||
|
"string",
|
||||||
|
"contains",
|
||||||
|
"notContains",
|
||||||
|
"containsAny",
|
||||||
|
"oneOf",
|
||||||
|
"range"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The field in the view to perform the search on."
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"description": "The value to search for - the type will depend on the operator in use.",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "array"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2340,89 +2447,158 @@
|
||||||
"description": "A column used to display rows from this view - usually used when rendered in tables."
|
"description": "A column used to display rows from this view - usually used when rendered in tables."
|
||||||
},
|
},
|
||||||
"query": {
|
"query": {
|
||||||
|
"description": "Search parameters for view",
|
||||||
|
"type": "object",
|
||||||
|
"required": [],
|
||||||
|
"properties": {
|
||||||
|
"logicalOperator": {
|
||||||
|
"description": "When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"onEmptyFilter": {
|
||||||
|
"description": "If no filters match, should the view return all rows, or no rows.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"none"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"groups": {
|
||||||
|
"description": "A grouping of filters to be applied.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"allOr": {
|
"logicalOperator": {
|
||||||
"type": "boolean",
|
"description": "When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
"description": "Specifies that a row should be returned if it satisfies any of the specified options, rather than requiring it to fulfill all the search parameters. This defaults to false, meaning AND logic will be used."
|
|
||||||
},
|
|
||||||
"string": {
|
|
||||||
"type": "object",
|
|
||||||
"example": {
|
|
||||||
"columnName1": "value",
|
|
||||||
"columnName2": "value"
|
|
||||||
},
|
|
||||||
"description": "A map of field name to the string to search for, this will look for rows that have a value starting with the string value.",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "The value to search for in the column."
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filters": {
|
||||||
|
"description": "A list of filters to apply",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"operator": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The type of search operation which is being performed.",
|
||||||
|
"enum": [
|
||||||
|
"equal",
|
||||||
|
"notEqual",
|
||||||
|
"empty",
|
||||||
|
"notEmpty",
|
||||||
|
"fuzzy",
|
||||||
|
"string",
|
||||||
|
"contains",
|
||||||
|
"notContains",
|
||||||
|
"containsAny",
|
||||||
|
"oneOf",
|
||||||
|
"range"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The field in the view to perform the search on."
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"description": "The value to search for - the type will depend on the operator in use.",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "array"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"fuzzy": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for a sub-string within a string column, e.g. searching for 'dib' will match 'Budibase'."
|
|
||||||
},
|
|
||||||
"range": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches within a range, the format of this must be in the format of an object with a \"low\" and \"high\" property.",
|
|
||||||
"example": {
|
|
||||||
"columnName1": {
|
|
||||||
"low": 10,
|
|
||||||
"high": 20
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"equal": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows that have a column value that is exactly the value set."
|
|
||||||
},
|
|
||||||
"notEqual": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for any row which does not contain the specified column value."
|
|
||||||
},
|
|
||||||
"empty": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value.",
|
|
||||||
"example": {
|
|
||||||
"columnName1": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notEmpty": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows which have the specified column."
|
|
||||||
},
|
|
||||||
"oneOf": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]."
|
|
||||||
},
|
|
||||||
"contains": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for a value, or set of values in array column types (such as a multi-select). If an array of search options is provided then it must match all.",
|
|
||||||
"example": {
|
|
||||||
"arrayColumn": [
|
|
||||||
"a",
|
|
||||||
"b"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"notContains": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "The logical inverse of contains. Only works on array column types. If an array of values is passed, the row must not match any of them to be returned in the response.",
|
|
||||||
"example": {
|
|
||||||
"arrayColumn": [
|
|
||||||
"a",
|
|
||||||
"b"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"containsAny": {
|
"groups": {
|
||||||
|
"description": "A grouping of filters to be applied.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "As with the contains search, only works on array column types and searches for any of the provided values when given an array.",
|
"properties": {
|
||||||
"example": {
|
"logicalOperator": {
|
||||||
"arrayColumn": [
|
"description": "When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
"a",
|
"type": "string",
|
||||||
"b"
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"any"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"filters": {
|
||||||
|
"description": "A list of filters to apply",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"operator": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The type of search operation which is being performed.",
|
||||||
|
"enum": [
|
||||||
|
"equal",
|
||||||
|
"notEqual",
|
||||||
|
"empty",
|
||||||
|
"notEmpty",
|
||||||
|
"fuzzy",
|
||||||
|
"string",
|
||||||
|
"contains",
|
||||||
|
"notContains",
|
||||||
|
"containsAny",
|
||||||
|
"oneOf",
|
||||||
|
"range"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The field in the view to perform the search on."
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"description": "The value to search for - the type will depend on the operator in use.",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "array"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2565,89 +2741,158 @@
|
||||||
"description": "A column used to display rows from this view - usually used when rendered in tables."
|
"description": "A column used to display rows from this view - usually used when rendered in tables."
|
||||||
},
|
},
|
||||||
"query": {
|
"query": {
|
||||||
|
"description": "Search parameters for view",
|
||||||
|
"type": "object",
|
||||||
|
"required": [],
|
||||||
|
"properties": {
|
||||||
|
"logicalOperator": {
|
||||||
|
"description": "When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"onEmptyFilter": {
|
||||||
|
"description": "If no filters match, should the view return all rows, or no rows.",
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"none"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"groups": {
|
||||||
|
"description": "A grouping of filters to be applied.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"allOr": {
|
"logicalOperator": {
|
||||||
"type": "boolean",
|
"description": "When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
"description": "Specifies that a row should be returned if it satisfies any of the specified options, rather than requiring it to fulfill all the search parameters. This defaults to false, meaning AND logic will be used."
|
|
||||||
},
|
|
||||||
"string": {
|
|
||||||
"type": "object",
|
|
||||||
"example": {
|
|
||||||
"columnName1": "value",
|
|
||||||
"columnName2": "value"
|
|
||||||
},
|
|
||||||
"description": "A map of field name to the string to search for, this will look for rows that have a value starting with the string value.",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "The value to search for in the column."
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"any"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filters": {
|
||||||
|
"description": "A list of filters to apply",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"operator": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The type of search operation which is being performed.",
|
||||||
|
"enum": [
|
||||||
|
"equal",
|
||||||
|
"notEqual",
|
||||||
|
"empty",
|
||||||
|
"notEmpty",
|
||||||
|
"fuzzy",
|
||||||
|
"string",
|
||||||
|
"contains",
|
||||||
|
"notContains",
|
||||||
|
"containsAny",
|
||||||
|
"oneOf",
|
||||||
|
"range"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The field in the view to perform the search on."
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"description": "The value to search for - the type will depend on the operator in use.",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "array"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"fuzzy": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for a sub-string within a string column, e.g. searching for 'dib' will match 'Budibase'."
|
|
||||||
},
|
|
||||||
"range": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches within a range, the format of this must be in the format of an object with a \"low\" and \"high\" property.",
|
|
||||||
"example": {
|
|
||||||
"columnName1": {
|
|
||||||
"low": 10,
|
|
||||||
"high": 20
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"equal": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows that have a column value that is exactly the value set."
|
|
||||||
},
|
|
||||||
"notEqual": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for any row which does not contain the specified column value."
|
|
||||||
},
|
|
||||||
"empty": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value.",
|
|
||||||
"example": {
|
|
||||||
"columnName1": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notEmpty": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows which have the specified column."
|
|
||||||
},
|
|
||||||
"oneOf": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]."
|
|
||||||
},
|
|
||||||
"contains": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Searches for a value, or set of values in array column types (such as a multi-select). If an array of search options is provided then it must match all.",
|
|
||||||
"example": {
|
|
||||||
"arrayColumn": [
|
|
||||||
"a",
|
|
||||||
"b"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"notContains": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "The logical inverse of contains. Only works on array column types. If an array of values is passed, the row must not match any of them to be returned in the response.",
|
|
||||||
"example": {
|
|
||||||
"arrayColumn": [
|
|
||||||
"a",
|
|
||||||
"b"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"containsAny": {
|
"groups": {
|
||||||
|
"description": "A grouping of filters to be applied.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "As with the contains search, only works on array column types and searches for any of the provided values when given an array.",
|
"properties": {
|
||||||
"example": {
|
"logicalOperator": {
|
||||||
"arrayColumn": [
|
"description": "When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
"a",
|
"type": "string",
|
||||||
"b"
|
"enum": [
|
||||||
|
"all",
|
||||||
|
"any"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"filters": {
|
||||||
|
"description": "A list of filters to apply",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"operator": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The type of search operation which is being performed.",
|
||||||
|
"enum": [
|
||||||
|
"equal",
|
||||||
|
"notEqual",
|
||||||
|
"empty",
|
||||||
|
"notEmpty",
|
||||||
|
"fuzzy",
|
||||||
|
"string",
|
||||||
|
"contains",
|
||||||
|
"notContains",
|
||||||
|
"containsAny",
|
||||||
|
"oneOf",
|
||||||
|
"range"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"field": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The field in the view to perform the search on."
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"description": "The value to search for - the type will depend on the operator in use.",
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "array"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -469,8 +469,19 @@ components:
|
||||||
visible: false
|
visible: false
|
||||||
readonly: false
|
readonly: false
|
||||||
query:
|
query:
|
||||||
string:
|
logicalOperator: all
|
||||||
column: value
|
onEmptyFilter: none
|
||||||
|
groups:
|
||||||
|
- logicalOperator: any
|
||||||
|
filters:
|
||||||
|
- operator: string
|
||||||
|
field: name
|
||||||
|
value: John
|
||||||
|
- operator: range
|
||||||
|
field: age
|
||||||
|
value:
|
||||||
|
low: 18
|
||||||
|
high: 100
|
||||||
primaryDisplay: name
|
primaryDisplay: name
|
||||||
views:
|
views:
|
||||||
value:
|
value:
|
||||||
|
@ -492,8 +503,19 @@ components:
|
||||||
visible: false
|
visible: false
|
||||||
readonly: false
|
readonly: false
|
||||||
query:
|
query:
|
||||||
string:
|
logicalOperator: all
|
||||||
column: value
|
onEmptyFilter: none
|
||||||
|
groups:
|
||||||
|
- logicalOperator: any
|
||||||
|
filters:
|
||||||
|
- operator: string
|
||||||
|
field: name
|
||||||
|
value: John
|
||||||
|
- operator: range
|
||||||
|
field: age
|
||||||
|
value:
|
||||||
|
low: 18
|
||||||
|
high: 100
|
||||||
primaryDisplay: name
|
primaryDisplay: name
|
||||||
securitySchemes:
|
securitySchemes:
|
||||||
ApiKeyAuth:
|
ApiKeyAuth:
|
||||||
|
@ -1778,85 +1800,115 @@ components:
|
||||||
description: A column used to display rows from this view - usually used when
|
description: A column used to display rows from this view - usually used when
|
||||||
rendered in tables.
|
rendered in tables.
|
||||||
query:
|
query:
|
||||||
|
description: Search parameters for view
|
||||||
|
type: object
|
||||||
|
required: []
|
||||||
|
properties:
|
||||||
|
logicalOperator:
|
||||||
|
description: When using groups this defines whether all of the filters must
|
||||||
|
match, or only one of them.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- all
|
||||||
|
- any
|
||||||
|
onEmptyFilter:
|
||||||
|
description: If no filters match, should the view return all rows, or no rows.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- all
|
||||||
|
- none
|
||||||
|
groups:
|
||||||
|
description: A grouping of filters to be applied.
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
allOr:
|
logicalOperator:
|
||||||
type: boolean
|
description: When using groups this defines whether all of the filters must
|
||||||
description: Specifies that a row should be returned if it satisfies any of the
|
match, or only one of them.
|
||||||
specified options, rather than requiring it to fulfill all the
|
|
||||||
search parameters. This defaults to false, meaning AND logic
|
|
||||||
will be used.
|
|
||||||
string:
|
|
||||||
type: object
|
|
||||||
example:
|
|
||||||
columnName1: value
|
|
||||||
columnName2: value
|
|
||||||
description: A map of field name to the string to search for, this will look for
|
|
||||||
rows that have a value starting with the string value.
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
type: string
|
||||||
description: The value to search for in the column.
|
enum:
|
||||||
fuzzy:
|
- all
|
||||||
|
- any
|
||||||
|
filters:
|
||||||
|
description: A list of filters to apply
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
description: Searches for a sub-string within a string column, e.g. searching
|
properties:
|
||||||
for 'dib' will match 'Budibase'.
|
operator:
|
||||||
range:
|
type: string
|
||||||
type: object
|
description: The type of search operation which is being performed.
|
||||||
description: Searches within a range, the format of this must be in the format
|
enum:
|
||||||
of an object with a "low" and "high" property.
|
- equal
|
||||||
example:
|
- notEqual
|
||||||
columnName1:
|
- empty
|
||||||
low: 10
|
- notEmpty
|
||||||
high: 20
|
- fuzzy
|
||||||
equal:
|
- string
|
||||||
type: object
|
- contains
|
||||||
description: Searches for rows that have a column value that is exactly the
|
- notContains
|
||||||
value set.
|
- containsAny
|
||||||
notEqual:
|
- oneOf
|
||||||
type: object
|
- range
|
||||||
description: Searches for any row which does not contain the specified column
|
field:
|
||||||
value.
|
type: string
|
||||||
empty:
|
description: The field in the view to perform the search on.
|
||||||
type: object
|
value:
|
||||||
description: Searches for rows which do not contain the specified column. The
|
description: The value to search for - the type will depend on the operator in
|
||||||
object should simply contain keys of the column names, these can
|
use.
|
||||||
map to any value.
|
|
||||||
example:
|
|
||||||
columnName1: ""
|
|
||||||
notEmpty:
|
|
||||||
type: object
|
|
||||||
description: Searches for rows which have the specified column.
|
|
||||||
oneOf:
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: number
|
||||||
|
- type: boolean
|
||||||
|
- type: object
|
||||||
|
- type: array
|
||||||
|
groups:
|
||||||
|
description: A grouping of filters to be applied.
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
description: Searches for rows which have a column value that is any of the
|
properties:
|
||||||
specified values. The format of this must be columnName ->
|
logicalOperator:
|
||||||
[value1, value2].
|
description: When using groups this defines whether all of the filters must
|
||||||
contains:
|
match, or only one of them.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- all
|
||||||
|
- any
|
||||||
|
filters:
|
||||||
|
description: A list of filters to apply
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
description: Searches for a value, or set of values in array column types (such
|
properties:
|
||||||
as a multi-select). If an array of search options is provided
|
operator:
|
||||||
then it must match all.
|
type: string
|
||||||
example:
|
description: The type of search operation which is being performed.
|
||||||
arrayColumn:
|
enum:
|
||||||
- a
|
- equal
|
||||||
- b
|
- notEqual
|
||||||
notContains:
|
- empty
|
||||||
type: object
|
- notEmpty
|
||||||
description: The logical inverse of contains. Only works on array column types.
|
- fuzzy
|
||||||
If an array of values is passed, the row must not match any of
|
- string
|
||||||
them to be returned in the response.
|
- contains
|
||||||
example:
|
- notContains
|
||||||
arrayColumn:
|
- containsAny
|
||||||
- a
|
- oneOf
|
||||||
- b
|
- range
|
||||||
containsAny:
|
field:
|
||||||
type: object
|
type: string
|
||||||
description: As with the contains search, only works on array column types and
|
description: The field in the view to perform the search on.
|
||||||
searches for any of the provided values when given an array.
|
value:
|
||||||
example:
|
description: The value to search for - the type will depend on the operator in
|
||||||
arrayColumn:
|
use.
|
||||||
- a
|
oneOf:
|
||||||
- b
|
- type: string
|
||||||
|
- type: number
|
||||||
|
- type: boolean
|
||||||
|
- type: object
|
||||||
|
- type: array
|
||||||
sort:
|
sort:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
|
@ -1958,85 +2010,115 @@ components:
|
||||||
description: A column used to display rows from this view - usually used when
|
description: A column used to display rows from this view - usually used when
|
||||||
rendered in tables.
|
rendered in tables.
|
||||||
query:
|
query:
|
||||||
|
description: Search parameters for view
|
||||||
|
type: object
|
||||||
|
required: []
|
||||||
|
properties:
|
||||||
|
logicalOperator:
|
||||||
|
description: When using groups this defines whether all of the filters must
|
||||||
|
match, or only one of them.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- all
|
||||||
|
- any
|
||||||
|
onEmptyFilter:
|
||||||
|
description: If no filters match, should the view return all rows, or no rows.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- all
|
||||||
|
- none
|
||||||
|
groups:
|
||||||
|
description: A grouping of filters to be applied.
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
allOr:
|
logicalOperator:
|
||||||
type: boolean
|
description: When using groups this defines whether all of the filters must
|
||||||
description: Specifies that a row should be returned if it satisfies any of the
|
match, or only one of them.
|
||||||
specified options, rather than requiring it to fulfill all
|
|
||||||
the search parameters. This defaults to false, meaning AND
|
|
||||||
logic will be used.
|
|
||||||
string:
|
|
||||||
type: object
|
|
||||||
example:
|
|
||||||
columnName1: value
|
|
||||||
columnName2: value
|
|
||||||
description: A map of field name to the string to search for, this will look for
|
|
||||||
rows that have a value starting with the string value.
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
type: string
|
||||||
description: The value to search for in the column.
|
enum:
|
||||||
fuzzy:
|
- all
|
||||||
|
- any
|
||||||
|
filters:
|
||||||
|
description: A list of filters to apply
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
description: Searches for a sub-string within a string column, e.g. searching
|
properties:
|
||||||
for 'dib' will match 'Budibase'.
|
operator:
|
||||||
range:
|
type: string
|
||||||
type: object
|
description: The type of search operation which is being performed.
|
||||||
description: Searches within a range, the format of this must be in the format
|
enum:
|
||||||
of an object with a "low" and "high" property.
|
- equal
|
||||||
example:
|
- notEqual
|
||||||
columnName1:
|
- empty
|
||||||
low: 10
|
- notEmpty
|
||||||
high: 20
|
- fuzzy
|
||||||
equal:
|
- string
|
||||||
type: object
|
- contains
|
||||||
description: Searches for rows that have a column value that is exactly the
|
- notContains
|
||||||
value set.
|
- containsAny
|
||||||
notEqual:
|
- oneOf
|
||||||
type: object
|
- range
|
||||||
description: Searches for any row which does not contain the specified column
|
field:
|
||||||
value.
|
type: string
|
||||||
empty:
|
description: The field in the view to perform the search on.
|
||||||
type: object
|
value:
|
||||||
description: Searches for rows which do not contain the specified column. The
|
description: The value to search for - the type will depend on the operator in
|
||||||
object should simply contain keys of the column names, these
|
use.
|
||||||
can map to any value.
|
|
||||||
example:
|
|
||||||
columnName1: ""
|
|
||||||
notEmpty:
|
|
||||||
type: object
|
|
||||||
description: Searches for rows which have the specified column.
|
|
||||||
oneOf:
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: number
|
||||||
|
- type: boolean
|
||||||
|
- type: object
|
||||||
|
- type: array
|
||||||
|
groups:
|
||||||
|
description: A grouping of filters to be applied.
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
description: Searches for rows which have a column value that is any of the
|
properties:
|
||||||
specified values. The format of this must be columnName ->
|
logicalOperator:
|
||||||
[value1, value2].
|
description: When using groups this defines whether all of the filters must
|
||||||
contains:
|
match, or only one of them.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- all
|
||||||
|
- any
|
||||||
|
filters:
|
||||||
|
description: A list of filters to apply
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
description: Searches for a value, or set of values in array column types (such
|
properties:
|
||||||
as a multi-select). If an array of search options is
|
operator:
|
||||||
provided then it must match all.
|
type: string
|
||||||
example:
|
description: The type of search operation which is being performed.
|
||||||
arrayColumn:
|
enum:
|
||||||
- a
|
- equal
|
||||||
- b
|
- notEqual
|
||||||
notContains:
|
- empty
|
||||||
type: object
|
- notEmpty
|
||||||
description: The logical inverse of contains. Only works on array column types.
|
- fuzzy
|
||||||
If an array of values is passed, the row must not match any
|
- string
|
||||||
of them to be returned in the response.
|
- contains
|
||||||
example:
|
- notContains
|
||||||
arrayColumn:
|
- containsAny
|
||||||
- a
|
- oneOf
|
||||||
- b
|
- range
|
||||||
containsAny:
|
field:
|
||||||
type: object
|
type: string
|
||||||
description: As with the contains search, only works on array column types and
|
description: The field in the view to perform the search on.
|
||||||
searches for any of the provided values when given an array.
|
value:
|
||||||
example:
|
description: The value to search for - the type will depend on the operator in
|
||||||
arrayColumn:
|
use.
|
||||||
- a
|
oneOf:
|
||||||
- b
|
- type: string
|
||||||
|
- type: number
|
||||||
|
- type: boolean
|
||||||
|
- type: object
|
||||||
|
- type: array
|
||||||
sort:
|
sort:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
|
@ -2145,86 +2227,115 @@ components:
|
||||||
description: A column used to display rows from this view - usually used when
|
description: A column used to display rows from this view - usually used when
|
||||||
rendered in tables.
|
rendered in tables.
|
||||||
query:
|
query:
|
||||||
|
description: Search parameters for view
|
||||||
|
type: object
|
||||||
|
required: []
|
||||||
|
properties:
|
||||||
|
logicalOperator:
|
||||||
|
description: When using groups this defines whether all of the filters must
|
||||||
|
match, or only one of them.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- all
|
||||||
|
- any
|
||||||
|
onEmptyFilter:
|
||||||
|
description: If no filters match, should the view return all rows, or no rows.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- all
|
||||||
|
- none
|
||||||
|
groups:
|
||||||
|
description: A grouping of filters to be applied.
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
allOr:
|
logicalOperator:
|
||||||
type: boolean
|
description: When using groups this defines whether all of the filters must
|
||||||
description: Specifies that a row should be returned if it satisfies any of the
|
match, or only one of them.
|
||||||
specified options, rather than requiring it to fulfill all
|
|
||||||
the search parameters. This defaults to false, meaning AND
|
|
||||||
logic will be used.
|
|
||||||
string:
|
|
||||||
type: object
|
|
||||||
example:
|
|
||||||
columnName1: value
|
|
||||||
columnName2: value
|
|
||||||
description: A map of field name to the string to search for, this will look for
|
|
||||||
rows that have a value starting with the string value.
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
type: string
|
||||||
description: The value to search for in the column.
|
enum:
|
||||||
fuzzy:
|
- all
|
||||||
|
- any
|
||||||
|
filters:
|
||||||
|
description: A list of filters to apply
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
description: Searches for a sub-string within a string column, e.g. searching
|
properties:
|
||||||
for 'dib' will match 'Budibase'.
|
operator:
|
||||||
range:
|
type: string
|
||||||
type: object
|
description: The type of search operation which is being performed.
|
||||||
description: Searches within a range, the format of this must be in the format
|
enum:
|
||||||
of an object with a "low" and "high" property.
|
- equal
|
||||||
example:
|
- notEqual
|
||||||
columnName1:
|
- empty
|
||||||
low: 10
|
- notEmpty
|
||||||
high: 20
|
- fuzzy
|
||||||
equal:
|
- string
|
||||||
type: object
|
- contains
|
||||||
description: Searches for rows that have a column value that is exactly the
|
- notContains
|
||||||
value set.
|
- containsAny
|
||||||
notEqual:
|
- oneOf
|
||||||
type: object
|
- range
|
||||||
description: Searches for any row which does not contain the specified column
|
field:
|
||||||
value.
|
type: string
|
||||||
empty:
|
description: The field in the view to perform the search on.
|
||||||
type: object
|
value:
|
||||||
description: Searches for rows which do not contain the specified column. The
|
description: The value to search for - the type will depend on the operator in
|
||||||
object should simply contain keys of the column names,
|
use.
|
||||||
these can map to any value.
|
|
||||||
example:
|
|
||||||
columnName1: ""
|
|
||||||
notEmpty:
|
|
||||||
type: object
|
|
||||||
description: Searches for rows which have the specified column.
|
|
||||||
oneOf:
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: number
|
||||||
|
- type: boolean
|
||||||
|
- type: object
|
||||||
|
- type: array
|
||||||
|
groups:
|
||||||
|
description: A grouping of filters to be applied.
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
description: Searches for rows which have a column value that is any of the
|
properties:
|
||||||
specified values. The format of this must be columnName ->
|
logicalOperator:
|
||||||
[value1, value2].
|
description: When using groups this defines whether all of the filters must
|
||||||
contains:
|
match, or only one of them.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- all
|
||||||
|
- any
|
||||||
|
filters:
|
||||||
|
description: A list of filters to apply
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
type: object
|
type: object
|
||||||
description: Searches for a value, or set of values in array column types (such
|
properties:
|
||||||
as a multi-select). If an array of search options is
|
operator:
|
||||||
provided then it must match all.
|
type: string
|
||||||
example:
|
description: The type of search operation which is being performed.
|
||||||
arrayColumn:
|
enum:
|
||||||
- a
|
- equal
|
||||||
- b
|
- notEqual
|
||||||
notContains:
|
- empty
|
||||||
type: object
|
- notEmpty
|
||||||
description: The logical inverse of contains. Only works on array column types.
|
- fuzzy
|
||||||
If an array of values is passed, the row must not match
|
- string
|
||||||
any of them to be returned in the response.
|
- contains
|
||||||
example:
|
- notContains
|
||||||
arrayColumn:
|
- containsAny
|
||||||
- a
|
- oneOf
|
||||||
- b
|
- range
|
||||||
containsAny:
|
field:
|
||||||
type: object
|
type: string
|
||||||
description: As with the contains search, only works on array column types and
|
description: The field in the view to perform the search on.
|
||||||
searches for any of the provided values when given an
|
value:
|
||||||
array.
|
description: The value to search for - the type will depend on the operator in
|
||||||
example:
|
use.
|
||||||
arrayColumn:
|
oneOf:
|
||||||
- a
|
- type: string
|
||||||
- b
|
- type: number
|
||||||
|
- type: boolean
|
||||||
|
- type: object
|
||||||
|
- type: array
|
||||||
sort:
|
sort:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
import { object } from "./utils"
|
import { object } from "./utils"
|
||||||
import Resource from "./utils/Resource"
|
import Resource from "./utils/Resource"
|
||||||
import { CalculationType, SortOrder, SortType } from "@budibase/types"
|
import {
|
||||||
import { searchSchema } from "./misc"
|
ArrayOperator,
|
||||||
|
BasicOperator,
|
||||||
|
CalculationType,
|
||||||
|
RangeOperator,
|
||||||
|
SortOrder,
|
||||||
|
SortType,
|
||||||
|
} from "@budibase/types"
|
||||||
|
import { cloneDeep } from "lodash"
|
||||||
|
|
||||||
const view = {
|
const view = {
|
||||||
name: "peopleView",
|
name: "peopleView",
|
||||||
|
@ -25,9 +32,17 @@ const view = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
string: {
|
logicalOperator: "all",
|
||||||
column: "value",
|
onEmptyFilter: "none",
|
||||||
|
groups: [
|
||||||
|
{
|
||||||
|
logicalOperator: "any",
|
||||||
|
filters: [
|
||||||
|
{ operator: "string", field: "name", value: "John" },
|
||||||
|
{ operator: "range", field: "age", value: { low: 18, high: 100 } },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
primaryDisplay: "name",
|
primaryDisplay: "name",
|
||||||
}
|
}
|
||||||
|
@ -68,6 +83,78 @@ const baseColumnDef = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const logicalOperator = {
|
||||||
|
description:
|
||||||
|
"When using groups this defines whether all of the filters must match, or only one of them.",
|
||||||
|
type: "string",
|
||||||
|
enum: ["all", "any"],
|
||||||
|
}
|
||||||
|
|
||||||
|
const filterGroup = {
|
||||||
|
description: "A grouping of filters to be applied.",
|
||||||
|
type: "array",
|
||||||
|
items: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
logicalOperator,
|
||||||
|
filters: {
|
||||||
|
description: "A list of filters to apply",
|
||||||
|
type: "array",
|
||||||
|
items: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
operator: {
|
||||||
|
type: "string",
|
||||||
|
description:
|
||||||
|
"The type of search operation which is being performed.",
|
||||||
|
enum: [
|
||||||
|
...Object.values(BasicOperator),
|
||||||
|
...Object.values(ArrayOperator),
|
||||||
|
...Object.values(RangeOperator),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
field: {
|
||||||
|
type: "string",
|
||||||
|
description: "The field in the view to perform the search on.",
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
description:
|
||||||
|
"The value to search for - the type will depend on the operator in use.",
|
||||||
|
oneOf: [
|
||||||
|
{ type: "string" },
|
||||||
|
{ type: "number" },
|
||||||
|
{ type: "boolean" },
|
||||||
|
{ type: "object" },
|
||||||
|
{ type: "array" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// have to clone to avoid constantly recursive structure - we can't represent this easily
|
||||||
|
const layeredFilterGroup: any = cloneDeep(filterGroup)
|
||||||
|
layeredFilterGroup.items.properties.groups = filterGroup
|
||||||
|
|
||||||
|
const viewQuerySchema = {
|
||||||
|
description: "Search parameters for view",
|
||||||
|
type: "object",
|
||||||
|
required: [],
|
||||||
|
properties: {
|
||||||
|
logicalOperator,
|
||||||
|
onEmptyFilter: {
|
||||||
|
description:
|
||||||
|
"If no filters match, should the view return all rows, or no rows.",
|
||||||
|
type: "string",
|
||||||
|
enum: ["all", "none"],
|
||||||
|
},
|
||||||
|
groups: layeredFilterGroup,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
const viewSchema = {
|
const viewSchema = {
|
||||||
description: "The view to be created/updated.",
|
description: "The view to be created/updated.",
|
||||||
type: "object",
|
type: "object",
|
||||||
|
@ -91,7 +178,7 @@ const viewSchema = {
|
||||||
description:
|
description:
|
||||||
"A column used to display rows from this view - usually used when rendered in tables.",
|
"A column used to display rows from this view - usually used when rendered in tables.",
|
||||||
},
|
},
|
||||||
query: searchSchema,
|
query: viewQuerySchema,
|
||||||
sort: {
|
sort: {
|
||||||
type: "object",
|
type: "object",
|
||||||
required: ["field"],
|
required: ["field"],
|
||||||
|
|
|
@ -11,12 +11,10 @@ function fixView(view: ViewV2, params?: { viewId: string }) {
|
||||||
if (params?.viewId) {
|
if (params?.viewId) {
|
||||||
view.id = params.viewId
|
view.id = params.viewId
|
||||||
}
|
}
|
||||||
if (!view.version) {
|
|
||||||
view.version = 2
|
|
||||||
}
|
|
||||||
if (!view.query) {
|
if (!view.query) {
|
||||||
view.query = {}
|
view.query = {}
|
||||||
}
|
}
|
||||||
|
view.version = 2
|
||||||
return view
|
return view
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,19 @@ export class PublicRowAPI {
|
||||||
this.request = request
|
this.request = request
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async create(
|
||||||
|
tableId: string,
|
||||||
|
row: Row,
|
||||||
|
expectations?: PublicAPIExpectations
|
||||||
|
): Promise<Response<Row>> {
|
||||||
|
return this.request.send(
|
||||||
|
"post",
|
||||||
|
`/tables/${tableId}/rows`,
|
||||||
|
row,
|
||||||
|
expectations
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
async search(
|
async search(
|
||||||
tableId: string,
|
tableId: string,
|
||||||
query: SearchFilters,
|
query: SearchFilters,
|
||||||
|
|
|
@ -65,4 +65,26 @@ describe("check public API security", () => {
|
||||||
const result = await request.views.destroy(view.data.id, { status: 204 })
|
const result = await request.views.destroy(view.data.id, { status: 204 })
|
||||||
expect(result).toBeDefined()
|
expect(result).toBeDefined()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should be able to search rows through a view", async () => {
|
||||||
|
const row1 = await request.rows.create(
|
||||||
|
table._id!,
|
||||||
|
{ name: "hello world" },
|
||||||
|
{ status: 200 }
|
||||||
|
)
|
||||||
|
await request.rows.create(table._id!, { name: "foo bar" }, { status: 200 })
|
||||||
|
const response = await request.views.create(
|
||||||
|
{
|
||||||
|
...baseView(),
|
||||||
|
query: {
|
||||||
|
string: {
|
||||||
|
name: "hello",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ status: 201 }
|
||||||
|
)
|
||||||
|
const results = await request.rows.viewSearch(response.data.id, {})
|
||||||
|
expect(results.data.length).toEqual(1)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -845,49 +845,90 @@ export interface components {
|
||||||
type?: "calculation";
|
type?: "calculation";
|
||||||
/** @description A column used to display rows from this view - usually used when rendered in tables. */
|
/** @description A column used to display rows from this view - usually used when rendered in tables. */
|
||||||
primaryDisplay?: string;
|
primaryDisplay?: string;
|
||||||
|
/** @description Search parameters for view */
|
||||||
query?: {
|
query?: {
|
||||||
/** @description Specifies that a row should be returned if it satisfies any of the specified options, rather than requiring it to fulfill all the search parameters. This defaults to false, meaning AND logic will be used. */
|
|
||||||
allOr?: boolean;
|
|
||||||
/**
|
/**
|
||||||
* @description A map of field name to the string to search for, this will look for rows that have a value starting with the string value.
|
* @description When using groups this defines whether all of the filters must match, or only one of them.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
string?: { [key: string]: string };
|
logicalOperator?: "all" | "any";
|
||||||
/** @description Searches for a sub-string within a string column, e.g. searching for 'dib' will match 'Budibase'. */
|
|
||||||
fuzzy?: { [key: string]: unknown };
|
|
||||||
/**
|
/**
|
||||||
* @description Searches within a range, the format of this must be in the format of an object with a "low" and "high" property.
|
* @description If no filters match, should the view return all rows, or no rows.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
range?: { [key: string]: unknown };
|
onEmptyFilter?: "all" | "none";
|
||||||
/** @description Searches for rows that have a column value that is exactly the value set. */
|
/** @description A grouping of filters to be applied. */
|
||||||
equal?: { [key: string]: unknown };
|
groups?: {
|
||||||
/** @description Searches for any row which does not contain the specified column value. */
|
|
||||||
notEqual?: { [key: string]: unknown };
|
|
||||||
/**
|
/**
|
||||||
* @description Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value.
|
* @description When using groups this defines whether all of the filters must match, or only one of them.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
empty?: { [key: string]: unknown };
|
logicalOperator?: "all" | "any";
|
||||||
/** @description Searches for rows which have the specified column. */
|
/** @description A list of filters to apply */
|
||||||
notEmpty?: { [key: string]: unknown };
|
filters?: {
|
||||||
/** @description Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]. */
|
|
||||||
oneOf?: { [key: string]: unknown };
|
|
||||||
/**
|
/**
|
||||||
* @description Searches for a value, or set of values in array column types (such as a multi-select). If an array of search options is provided then it must match all.
|
* @description The type of search operation which is being performed.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
contains?: { [key: string]: unknown };
|
operator?:
|
||||||
|
| "equal"
|
||||||
|
| "notEqual"
|
||||||
|
| "empty"
|
||||||
|
| "notEmpty"
|
||||||
|
| "fuzzy"
|
||||||
|
| "string"
|
||||||
|
| "contains"
|
||||||
|
| "notContains"
|
||||||
|
| "containsAny"
|
||||||
|
| "oneOf"
|
||||||
|
| "range";
|
||||||
|
/** @description The field in the view to perform the search on. */
|
||||||
|
field?: string;
|
||||||
|
/** @description The value to search for - the type will depend on the operator in use. */
|
||||||
|
value?:
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| { [key: string]: unknown }
|
||||||
|
| unknown[];
|
||||||
|
}[];
|
||||||
|
/** @description A grouping of filters to be applied. */
|
||||||
|
groups?: {
|
||||||
/**
|
/**
|
||||||
* @description The logical inverse of contains. Only works on array column types. If an array of values is passed, the row must not match any of them to be returned in the response.
|
* @description When using groups this defines whether all of the filters must match, or only one of them.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
notContains?: { [key: string]: unknown };
|
logicalOperator?: "all" | "any";
|
||||||
|
/** @description A list of filters to apply */
|
||||||
|
filters?: {
|
||||||
/**
|
/**
|
||||||
* @description As with the contains search, only works on array column types and searches for any of the provided values when given an array.
|
* @description The type of search operation which is being performed.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
containsAny?: { [key: string]: unknown };
|
operator?:
|
||||||
|
| "equal"
|
||||||
|
| "notEqual"
|
||||||
|
| "empty"
|
||||||
|
| "notEmpty"
|
||||||
|
| "fuzzy"
|
||||||
|
| "string"
|
||||||
|
| "contains"
|
||||||
|
| "notContains"
|
||||||
|
| "containsAny"
|
||||||
|
| "oneOf"
|
||||||
|
| "range";
|
||||||
|
/** @description The field in the view to perform the search on. */
|
||||||
|
field?: string;
|
||||||
|
/** @description The value to search for - the type will depend on the operator in use. */
|
||||||
|
value?:
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| { [key: string]: unknown }
|
||||||
|
| unknown[];
|
||||||
|
}[];
|
||||||
|
}[];
|
||||||
|
}[];
|
||||||
};
|
};
|
||||||
sort?: {
|
sort?: {
|
||||||
/** @description The field from the table/view schema to sort on. */
|
/** @description The field from the table/view schema to sort on. */
|
||||||
|
@ -946,49 +987,90 @@ export interface components {
|
||||||
type?: "calculation";
|
type?: "calculation";
|
||||||
/** @description A column used to display rows from this view - usually used when rendered in tables. */
|
/** @description A column used to display rows from this view - usually used when rendered in tables. */
|
||||||
primaryDisplay?: string;
|
primaryDisplay?: string;
|
||||||
|
/** @description Search parameters for view */
|
||||||
query?: {
|
query?: {
|
||||||
/** @description Specifies that a row should be returned if it satisfies any of the specified options, rather than requiring it to fulfill all the search parameters. This defaults to false, meaning AND logic will be used. */
|
|
||||||
allOr?: boolean;
|
|
||||||
/**
|
/**
|
||||||
* @description A map of field name to the string to search for, this will look for rows that have a value starting with the string value.
|
* @description When using groups this defines whether all of the filters must match, or only one of them.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
string?: { [key: string]: string };
|
logicalOperator?: "all" | "any";
|
||||||
/** @description Searches for a sub-string within a string column, e.g. searching for 'dib' will match 'Budibase'. */
|
|
||||||
fuzzy?: { [key: string]: unknown };
|
|
||||||
/**
|
/**
|
||||||
* @description Searches within a range, the format of this must be in the format of an object with a "low" and "high" property.
|
* @description If no filters match, should the view return all rows, or no rows.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
range?: { [key: string]: unknown };
|
onEmptyFilter?: "all" | "none";
|
||||||
/** @description Searches for rows that have a column value that is exactly the value set. */
|
/** @description A grouping of filters to be applied. */
|
||||||
equal?: { [key: string]: unknown };
|
groups?: {
|
||||||
/** @description Searches for any row which does not contain the specified column value. */
|
|
||||||
notEqual?: { [key: string]: unknown };
|
|
||||||
/**
|
/**
|
||||||
* @description Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value.
|
* @description When using groups this defines whether all of the filters must match, or only one of them.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
empty?: { [key: string]: unknown };
|
logicalOperator?: "all" | "any";
|
||||||
/** @description Searches for rows which have the specified column. */
|
/** @description A list of filters to apply */
|
||||||
notEmpty?: { [key: string]: unknown };
|
filters?: {
|
||||||
/** @description Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]. */
|
|
||||||
oneOf?: { [key: string]: unknown };
|
|
||||||
/**
|
/**
|
||||||
* @description Searches for a value, or set of values in array column types (such as a multi-select). If an array of search options is provided then it must match all.
|
* @description The type of search operation which is being performed.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
contains?: { [key: string]: unknown };
|
operator?:
|
||||||
|
| "equal"
|
||||||
|
| "notEqual"
|
||||||
|
| "empty"
|
||||||
|
| "notEmpty"
|
||||||
|
| "fuzzy"
|
||||||
|
| "string"
|
||||||
|
| "contains"
|
||||||
|
| "notContains"
|
||||||
|
| "containsAny"
|
||||||
|
| "oneOf"
|
||||||
|
| "range";
|
||||||
|
/** @description The field in the view to perform the search on. */
|
||||||
|
field?: string;
|
||||||
|
/** @description The value to search for - the type will depend on the operator in use. */
|
||||||
|
value?:
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| { [key: string]: unknown }
|
||||||
|
| unknown[];
|
||||||
|
}[];
|
||||||
|
/** @description A grouping of filters to be applied. */
|
||||||
|
groups?: {
|
||||||
/**
|
/**
|
||||||
* @description The logical inverse of contains. Only works on array column types. If an array of values is passed, the row must not match any of them to be returned in the response.
|
* @description When using groups this defines whether all of the filters must match, or only one of them.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
notContains?: { [key: string]: unknown };
|
logicalOperator?: "all" | "any";
|
||||||
|
/** @description A list of filters to apply */
|
||||||
|
filters?: {
|
||||||
/**
|
/**
|
||||||
* @description As with the contains search, only works on array column types and searches for any of the provided values when given an array.
|
* @description The type of search operation which is being performed.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
containsAny?: { [key: string]: unknown };
|
operator?:
|
||||||
|
| "equal"
|
||||||
|
| "notEqual"
|
||||||
|
| "empty"
|
||||||
|
| "notEmpty"
|
||||||
|
| "fuzzy"
|
||||||
|
| "string"
|
||||||
|
| "contains"
|
||||||
|
| "notContains"
|
||||||
|
| "containsAny"
|
||||||
|
| "oneOf"
|
||||||
|
| "range";
|
||||||
|
/** @description The field in the view to perform the search on. */
|
||||||
|
field?: string;
|
||||||
|
/** @description The value to search for - the type will depend on the operator in use. */
|
||||||
|
value?:
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| { [key: string]: unknown }
|
||||||
|
| unknown[];
|
||||||
|
}[];
|
||||||
|
}[];
|
||||||
|
}[];
|
||||||
};
|
};
|
||||||
sort?: {
|
sort?: {
|
||||||
/** @description The field from the table/view schema to sort on. */
|
/** @description The field from the table/view schema to sort on. */
|
||||||
|
@ -1049,49 +1131,90 @@ export interface components {
|
||||||
type?: "calculation";
|
type?: "calculation";
|
||||||
/** @description A column used to display rows from this view - usually used when rendered in tables. */
|
/** @description A column used to display rows from this view - usually used when rendered in tables. */
|
||||||
primaryDisplay?: string;
|
primaryDisplay?: string;
|
||||||
|
/** @description Search parameters for view */
|
||||||
query?: {
|
query?: {
|
||||||
/** @description Specifies that a row should be returned if it satisfies any of the specified options, rather than requiring it to fulfill all the search parameters. This defaults to false, meaning AND logic will be used. */
|
|
||||||
allOr?: boolean;
|
|
||||||
/**
|
/**
|
||||||
* @description A map of field name to the string to search for, this will look for rows that have a value starting with the string value.
|
* @description When using groups this defines whether all of the filters must match, or only one of them.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
string?: { [key: string]: string };
|
logicalOperator?: "all" | "any";
|
||||||
/** @description Searches for a sub-string within a string column, e.g. searching for 'dib' will match 'Budibase'. */
|
|
||||||
fuzzy?: { [key: string]: unknown };
|
|
||||||
/**
|
/**
|
||||||
* @description Searches within a range, the format of this must be in the format of an object with a "low" and "high" property.
|
* @description If no filters match, should the view return all rows, or no rows.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
range?: { [key: string]: unknown };
|
onEmptyFilter?: "all" | "none";
|
||||||
/** @description Searches for rows that have a column value that is exactly the value set. */
|
/** @description A grouping of filters to be applied. */
|
||||||
equal?: { [key: string]: unknown };
|
groups?: {
|
||||||
/** @description Searches for any row which does not contain the specified column value. */
|
|
||||||
notEqual?: { [key: string]: unknown };
|
|
||||||
/**
|
/**
|
||||||
* @description Searches for rows which do not contain the specified column. The object should simply contain keys of the column names, these can map to any value.
|
* @description When using groups this defines whether all of the filters must match, or only one of them.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
empty?: { [key: string]: unknown };
|
logicalOperator?: "all" | "any";
|
||||||
/** @description Searches for rows which have the specified column. */
|
/** @description A list of filters to apply */
|
||||||
notEmpty?: { [key: string]: unknown };
|
filters?: {
|
||||||
/** @description Searches for rows which have a column value that is any of the specified values. The format of this must be columnName -> [value1, value2]. */
|
|
||||||
oneOf?: { [key: string]: unknown };
|
|
||||||
/**
|
/**
|
||||||
* @description Searches for a value, or set of values in array column types (such as a multi-select). If an array of search options is provided then it must match all.
|
* @description The type of search operation which is being performed.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
contains?: { [key: string]: unknown };
|
operator?:
|
||||||
|
| "equal"
|
||||||
|
| "notEqual"
|
||||||
|
| "empty"
|
||||||
|
| "notEmpty"
|
||||||
|
| "fuzzy"
|
||||||
|
| "string"
|
||||||
|
| "contains"
|
||||||
|
| "notContains"
|
||||||
|
| "containsAny"
|
||||||
|
| "oneOf"
|
||||||
|
| "range";
|
||||||
|
/** @description The field in the view to perform the search on. */
|
||||||
|
field?: string;
|
||||||
|
/** @description The value to search for - the type will depend on the operator in use. */
|
||||||
|
value?:
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| { [key: string]: unknown }
|
||||||
|
| unknown[];
|
||||||
|
}[];
|
||||||
|
/** @description A grouping of filters to be applied. */
|
||||||
|
groups?: {
|
||||||
/**
|
/**
|
||||||
* @description The logical inverse of contains. Only works on array column types. If an array of values is passed, the row must not match any of them to be returned in the response.
|
* @description When using groups this defines whether all of the filters must match, or only one of them.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
notContains?: { [key: string]: unknown };
|
logicalOperator?: "all" | "any";
|
||||||
|
/** @description A list of filters to apply */
|
||||||
|
filters?: {
|
||||||
/**
|
/**
|
||||||
* @description As with the contains search, only works on array column types and searches for any of the provided values when given an array.
|
* @description The type of search operation which is being performed.
|
||||||
* @example [object Object]
|
* @enum {string}
|
||||||
*/
|
*/
|
||||||
containsAny?: { [key: string]: unknown };
|
operator?:
|
||||||
|
| "equal"
|
||||||
|
| "notEqual"
|
||||||
|
| "empty"
|
||||||
|
| "notEmpty"
|
||||||
|
| "fuzzy"
|
||||||
|
| "string"
|
||||||
|
| "contains"
|
||||||
|
| "notContains"
|
||||||
|
| "containsAny"
|
||||||
|
| "oneOf"
|
||||||
|
| "range";
|
||||||
|
/** @description The field in the view to perform the search on. */
|
||||||
|
field?: string;
|
||||||
|
/** @description The value to search for - the type will depend on the operator in use. */
|
||||||
|
value?:
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| { [key: string]: unknown }
|
||||||
|
| unknown[];
|
||||||
|
}[];
|
||||||
|
}[];
|
||||||
|
}[];
|
||||||
};
|
};
|
||||||
sort?: {
|
sort?: {
|
||||||
/** @description The field from the table/view schema to sort on. */
|
/** @description The field from the table/view schema to sort on. */
|
||||||
|
|
Loading…
Reference in New Issue