from enum import Enum
from typing import List, Optional
from nisystemlink.clients.core._uplink._json_model import JsonModel
from nisystemlink.clients.core._uplink._with_paging import WithPaging
from pydantic import Field
[docs]class ResultField(str, Enum):
"""The allowed field for which the values can be queried for."""
ID = "ID"
STARTED_AT = "STARTED_AT"
UPDATED_AT = "UPDATED_AT"
PROGRAM_NAME = "PROGRAM_NAME"
SYSTEM_ID = "SYSTEM_ID"
HOST_NAME = "HOST_NAME"
OPERATOR = "OPERATOR"
SERIAL_NUMBER = "SERIAL_NUMBER"
PART_NUMBER = "PART_NUMBER"
PRODUCT = "PRODUCT"
TOTAL_TIME_IN_SECONDS = "TOTAL_TIME_IN_SECONDS"
class ResultOrderByField(str, Enum):
"""The fields by which results can be ordered."""
ID = "ID"
STARTED_AT = "STARTED_AT"
UPDATED_AT = "UPDATED_AT"
PROGRAM_NAME = "PROGRAM_NAME"
SYSTEM_ID = "SYSTEM_ID"
HOST_NAME = "HOST_NAME"
OPERATOR = "OPERATOR"
SERIAL_NUMBER = "SERIAL_NUMBER"
PART_NUMBER = "PART_NUMBER"
PRODUCT = "PRODUCT"
TOTAL_TIME_IN_SECONDS = "TOTAL_TIME_IN_SECONDS"
PROPERTIES = "PROPERTIES"
class ComparisonType(str, Enum):
"""The valid ways to order a result query."""
DEFAULT = "DEFAULT"
NUMERIC = "NUMERIC"
LEXICOGRAPHIC = "LEXICOGRAPHIC"
[docs]class ResultProjection(str, Enum):
"""The allowed projections for query.
When using projection, only the fields specified by the projection element will be included in
the response.
"""
ID = "ID"
STATUS = "STATUS"
STARTED_AT = "STARTED_AT"
UPDATED_AT = "UPDATED_AT"
PROGRAM_NAME = "PROGRAM_NAME"
SYSTEM_ID = "SYSTEM_ID"
HOST_NAME = "HOST_NAME"
OPERATOR = "OPERATOR"
SERIAL_NUMBER = "SERIAL_NUMBER"
PART_NUMBER = "PART_NUMBER"
TOTAL_TIME_IN_SECONDS = "TOTAL_TIME_IN_SECONDS"
KEYWORDS = "KEYWORDS"
PROPERTIES = "PROPERTIES"
FILE_IDS = "FILE_IDS"
DATA_TABLE_IDS = "DATA_TABLE_IDS"
STATUS_TYPE_SUMMARY = "STATUS_TYPE_SUMMARY"
WORKSPACE = "WORKSPACE"
class QueryResultsBase(JsonModel):
filter: Optional[str] = None
"""
The result query filter in Dynamic Linq format.
Allowed properties in the filter are:
- `id`: String for the global identifier of the result
- `status.statusType`: String enumeration representing the status of the result.
Possible values are : LOOPING, SKIPPED, CUSTOM, DONE, PASSED, FAILED,
RUNNING, WAITING, TERMINATED, ERRORED, TIMED_OUT
- `systemId`: String for the system identifier of the result
- `hostName`: String for the host name of the result
- `operator`: String for the operator of the result
- `serialNumber`: String for the serial number of the result
- `totalTimeInSeconds`: Float for the total time in seconds of the result
- `partNumber`: String representing the part number of the result
- `programName`: String of the program name
- `startedAt`: ISO-8601 formatted UTC timestamp indicating when the result was started.
- `updatedAt`: ISO-8601 formatted UTC timestamp indicating when the result was last updated.
- `keywords`: A list of keyword strings
- `properties`: A dictionary of additional string to string properties
- `fileIds`: A list of string ids for files stored in the file service (`/nifile`)
- `dataTableIds`: A list of string ids for data tables stored in the data frame service (`/nidataframe`)
- `workspaceId`: String for the workspace identifier of the result
See [Dynamic Linq](https://github.com/ni/systemlink-OpenAPI-documents/wiki/Dynamic-Linq-Query-Language)
documentation for more details.
`"@0"`, `"@1"` etc. can be used in conjunction with the `substitutions` parameter to keep this
query string more simple and reusable.
"""
substitutions: Optional[List[str]] = None
"""String substitutions into the `filter`.
Makes substitutions in the query filter expression. Substitutions for the query expression are
indicated by non-negative integers that are prefixed with the "at" symbol. Each substitution in
the given expression will be replaced by the element at the corresponding index (zero-based) in
this list. For example, "@0" in the filter expression will be replaced with the element at the
zeroth index of the substitutions list.
"""
class QueryProductsBase(JsonModel):
product_filter: Optional[str] = None
"""
The product query filter in Dynamic Linq format.
Allowed properties in the filter are:
- `id`: String for the global identifier of the product
- `partNumber`: String representing the part number of the product
- `name`: String of the product name
- `family`: String for the product family
- `updatedAt`: ISO-8601 formatted UTC timestamp indicating when the product was last updated.
- `keywords`: A list of keyword strings
- `properties`: A dictionary of additional string to string properties
- `fileIds`: A list of string ids for files stored in the file service (`/nifile`)
See [Dynamic Linq](https://github.com/ni/systemlink-OpenAPI-documents/wiki/Dynamic-Linq-Query-Language)
documentation for more details.
`"@0"`, `"@1"` etc. can be used in conjunction with the `substitutions` parameter to keep this
query string more simple and reusable.
"""
product_substitutions: Optional[List[str]] = None
"""String substitutions into the `filter`.
Makes substitutions in the query filter expression. Substitutions for the query expression are
indicated by non-negative integers that are prefixed with the "at" symbol. Each substitution in
the given expression will be replaced by the element at the corresponding index (zero-based) in
this list. For example, "@0" in the filter expression will be replaced with the element at the
zeroth index of the substitutions list.
"""
[docs]class QueryResultsRequest(QueryResultsBase, QueryProductsBase, WithPaging):
order_by: Optional[ResultOrderByField] = Field(None, alias="orderBy")
"""Specifies the fields to use to sort the results.
By default, results are sorted by `id`
"""
order_by_key: Optional[str] = Field(None, alias="orderByKey")
"""Specifies the property to use to sort the results when ordering by PROPERTIES.
Results that do not contain the orderByKey will be considered the smallest value.
"""
order_by_comparison_type: Optional[ComparisonType] = Field(
None, alias="orderByComparisonType"
)
"""An enumeration of comparison types that can be used for ordered queries.
For non-DEFAULT comparisons, values that cannot be converted will be considered the smallest value.
"""
descending: Optional[bool] = None
"""Specifies whether to return the results in descending order.
By default, this value is `false` and results are sorted in ascending order.
"""
projection: Optional[List[ResultProjection]] = None
"""Specifies the fields to include in the returned results.
Fields you do not specify are excluded. Returns all fields if no value is specified.
"""
take: Optional[int] = None
"""Maximum number of results to return in the current API response.
Uses the default if the specified value is negative. The default value is `1000` results.
"""
return_count: Optional[bool] = None
"""If true, the response will include a count of all results matching the filter.
By default, this value is `False` and count is not returned. Note that returning the count may
incur performance penalties as the service may have to do a complete walk of the database to
compute count. """
[docs]class QueryResultValuesRequest(QueryResultsBase):
field: Optional[ResultField] = None
"""The result field to return for this query."""
starts_with: Optional[str] = None
"""Only return string parameters prefixed by this value (case sensitive)."""