{"version":3,"file":"types.cjs","sources":["../../src/types.ts"],"sourcesContent":["import type { JsonTree } from '@react-awesome-query-builder/ui';\n\nimport {\n  type DataFrame,\n  type DataQuery,\n  type DataSourceJsonData,\n  type MetricFindValue,\n  type SelectableValue,\n  type TimeRange,\n  toOption as toOptionFromData,\n} from '@grafana/data';\nimport { type CompletionItemKind, type EditorMode, type LanguageDefinition } from '@grafana/plugin-ui';\n\nimport { type QueryWithDefaults } from './defaults';\nimport {\n  type QueryEditorFunctionExpression,\n  type QueryEditorGroupByExpression,\n  type QueryEditorPropertyExpression,\n} from './expressions';\n\nexport interface SqlQueryForInterpolation {\n  dataset?: string;\n  alias?: string;\n  format?: QueryFormat;\n  rawSql?: string;\n  refId: string;\n  hide?: boolean;\n}\n\nexport interface SQLConnectionLimits {\n  maxOpenConns: number;\n  maxIdleConns: number;\n  maxIdleConnsAuto: boolean;\n  connMaxLifetime: number;\n}\n\nexport interface SQLOptions extends SQLConnectionLimits, DataSourceJsonData {\n  tlsAuth: boolean;\n  tlsAuthWithCACert: boolean;\n  timezone: string;\n  tlsSkipVerify: boolean;\n  user: string;\n  database: string;\n  url: string;\n  timeInterval: string;\n}\n\nexport enum QueryFormat {\n  Timeseries = 'time_series',\n  Table = 'table',\n}\n\nexport type SQLQueryMeta = { valueField?: string; textField?: string };\n\nexport interface SQLQuery extends DataQuery {\n  alias?: string;\n  format?: QueryFormat;\n  rawSql?: string;\n  dataset?: string;\n  table?: string;\n  sql?: SQLExpression;\n  editorMode?: EditorMode;\n  rawQuery?: boolean;\n  meta?: SQLQueryMeta;\n}\n\nexport type SQLVariableQuery = { query: string } & SQLQuery;\n\nexport interface NameValue {\n  name: string;\n  value: string;\n}\n\nexport type SQLFilters = NameValue[];\n\nexport interface SQLExpression {\n  columns?: QueryEditorFunctionExpression[];\n  whereJsonTree?: JsonTree;\n  whereString?: string;\n  filters?: SQLFilters;\n  groupBy?: QueryEditorGroupByExpression[];\n  orderBy?: QueryEditorPropertyExpression;\n  orderByDirection?: 'ASC' | 'DESC';\n  limit?: number;\n  offset?: number;\n}\n\nexport interface TableSchema {\n  name?: string;\n  schema?: TableFieldSchema[];\n}\n\nexport interface TableFieldSchema {\n  name: string;\n  description?: string;\n  type: string;\n  repeated: boolean;\n  schema: TableFieldSchema[];\n}\n\nexport interface QueryRowFilter {\n  filter: boolean;\n  group: boolean;\n  order: boolean;\n  preview: boolean;\n}\n\nexport const QUERY_FORMAT_OPTIONS = [\n  { label: 'Time series', value: QueryFormat.Timeseries },\n  { label: 'Table', value: QueryFormat.Table },\n];\n\nconst backWardToOption = (value: string) => ({ label: value, value });\n\nexport const toOption = toOptionFromData ?? backWardToOption;\n\nexport interface ResourceSelectorProps {\n  disabled?: boolean;\n  className?: string;\n  applyDefault?: boolean;\n}\n// React Awesome Query builder field types.\n// These are responsible for rendering the correct UI for the field.\nexport type RAQBFieldTypes = 'text' | 'number' | 'boolean' | 'datetime' | 'date' | 'time';\n\nexport interface SQLSelectableValue extends SelectableValue {\n  type?: string;\n  raqbFieldType?: RAQBFieldTypes;\n}\n\nexport interface DB {\n  init?: (datasourceId?: string) => Promise<boolean>;\n  datasets: () => Promise<string[]>;\n  tables: (dataset?: string) => Promise<string[]>;\n  fields: (query: SQLQuery, order?: boolean) => Promise<SQLSelectableValue[]>;\n  validateQuery: (query: SQLQuery, range?: TimeRange) => Promise<ValidationResults>;\n  dispose?: (dsID?: string) => void;\n  lookup?: (path?: string) => Promise<Array<{ name: string; completion: string }>>;\n  getEditorLanguageDefinition: () => LanguageDefinition;\n  toRawSql: (query: SQLQuery) => string;\n  functions: () => Func[];\n}\n\nexport interface FuncParameter {\n  name: string;\n  required?: boolean;\n  options?: (query: SQLQuery) => Promise<SelectableValue[]>;\n}\nexport interface Func {\n  name: string;\n  parameters?: FuncParameter[];\n  description?: string;\n}\n\nexport interface QueryEditorProps {\n  db: DB;\n  query: QueryWithDefaults;\n  onChange: (query: SQLQuery) => void;\n  range?: TimeRange;\n}\n\nexport interface ValidationResults {\n  query: SQLQuery;\n  rawSql?: string;\n  error: string;\n  isError: boolean;\n  isValid: boolean;\n  statistics?: {\n    TotalBytesProcessed: number;\n  } | null;\n}\n\nexport interface SqlQueryModel {\n  quoteLiteral: (v: string) => string;\n}\n\nexport interface ResponseParser {\n  transformMetricFindResponse: (frame: DataFrame) => MetricFindValue[];\n}\n\nexport interface MetaDefinition {\n  name: string;\n  completion?: string;\n  kind: CompletionItemKind;\n}\n\nexport type SQLDialect = 'postgres' | 'influx' | 'other';\n"],"names":["QueryFormat","toOptionFromData"],"mappings":";;;;;;;AAAA,IAAA,EAAA;AA+CO,IAAK,WAAA,qBAAAA,YAAAA,KAAL;AACL,EAAAA,aAAA,YAAA,CAAA,GAAa,aAAA;AACb,EAAAA,aAAA,OAAA,CAAA,GAAQ,OAAA;AAFE,EAAA,OAAAA,YAAAA;AAAA,CAAA,EAAA,WAAA,IAAA,EAAA;AA4DL,MAAM,oBAAA,GAAuB;AAAA,EAClC,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,aAAA,mBAAuB;AAAA,EACtD,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA;AAC3B;AAEA,MAAM,mBAAmB,CAAC,KAAA,MAAmB,EAAE,KAAA,EAAO,OAAO,KAAA,EAAM,CAAA;AAE5D,MAAM,YAAW,EAAA,GAAAC,aAAA,KAAA,IAAA,GAAA,EAAA,GAAoB;;;;;;"}