{"version":3,"file":"SQLWhereRow.mjs","sources":["../../../../src/components/visual-query-builder/SQLWhereRow.tsx"],"sourcesContent":["import { useAsync } from 'react-use';\n\nimport { type SelectableValue, type TypedVariableModel } from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\n\nimport { type QueryWithDefaults } from '../../defaults';\nimport { type DB, type SQLExpression, type SQLQuery, type SQLSelectableValue } from '../../types';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { type Config } from './AwesomeQueryBuilder';\nimport { WhereRow } from './WhereRow';\n\ninterface WhereRowProps {\n  query: QueryWithDefaults;\n  fields: SelectableValue[];\n  onQueryChange: (query: SQLQuery) => void;\n  db: DB;\n}\n\nexport function SQLWhereRow({ query, fields, onQueryChange, db }: WhereRowProps) {\n  const state = useAsync(async () => {\n    return mapFieldsToTypes(fields);\n  }, [fields]);\n\n  const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n  return (\n    <WhereRow\n      // TODO: fix key that's used to force clean render or SQLWhereRow - otherwise it doesn't render operators correctly\n      key={JSON.stringify(state.value)}\n      config={{ fields: state.value || {} }}\n      sql={query.sql!}\n      onSqlChange={(val: SQLExpression) => {\n        const templateVars = getTemplateSrv().getVariables();\n\n        removeQuotesForMultiVariables(val, templateVars);\n\n        onSqlChange(val);\n      }}\n    />\n  );\n}\n\n// needed for awesome query builder\nfunction mapFieldsToTypes(columns: SQLSelectableValue[]) {\n  const fields: Config['fields'] = {};\n  for (const col of columns) {\n    fields[col.value] = {\n      type: col.raqbFieldType || 'text',\n      valueSources: ['value'],\n      mainWidgetProps: { customProps: { icon: col.icon } },\n    };\n  }\n  return fields;\n}\n\nexport function removeQuotesForMultiVariables(val: SQLExpression, templateVars: TypedVariableModel[]) {\n  const multiVariableInWhereString = (tv: TypedVariableModel) =>\n    'multi' in tv &&\n    tv.multi &&\n    (val.whereString?.includes(`\\${${tv.name}}`) || val.whereString?.includes(`$${tv.name}`));\n\n  if (templateVars.some((tv) => multiVariableInWhereString(tv))) {\n    val.whereString = val.whereString?.replaceAll(\"')\", ')');\n    val.whereString = val.whereString?.replaceAll(\"('\", '(');\n  }\n}\n"],"names":["_a","_b"],"mappings":";;;;;;;AAmBO,SAAS,YAAY,EAAE,KAAA,EAAO,MAAA,EAAQ,aAAA,EAAe,IAAG,EAAkB;AAC/E,EAAA,MAAM,KAAA,GAAQ,SAAS,YAAY;AACjC,IAAA,OAAO,iBAAiB,MAAM,CAAA;AAAA,EAChC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,EAAE,aAAY,GAAI,YAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AAEjE,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MAGC,QAAQ,EAAE,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAE;AAAA,MACpC,KAAK,KAAA,CAAM,GAAA;AAAA,MACX,WAAA,EAAa,CAAC,GAAA,KAAuB;AACnC,QAAA,MAAM,YAAA,GAAe,cAAA,EAAe,CAAE,YAAA,EAAa;AAEnD,QAAA,6BAAA,CAA8B,KAAK,YAAY,CAAA;AAE/C,QAAA,WAAA,CAAY,GAAG,CAAA;AAAA,MACjB;AAAA,KAAA;AAAA,IATK,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,KAAK;AAAA,GAUjC;AAEJ;AAGA,SAAS,iBAAiB,OAAA,EAA+B;AACvD,EAAA,MAAM,SAA2B,EAAC;AAClC,EAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,IAAA,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,GAAI;AAAA,MAClB,IAAA,EAAM,IAAI,aAAA,IAAiB,MAAA;AAAA,MAC3B,YAAA,EAAc,CAAC,OAAO,CAAA;AAAA,MACtB,iBAAiB,EAAE,WAAA,EAAa,EAAE,IAAA,EAAM,GAAA,CAAI,MAAK;AAAE,KACrD;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,6BAAA,CAA8B,KAAoB,YAAA,EAAoC;AAxDtG,EAAA,IAAA,EAAA,EAAA,EAAA;AAyDE,EAAA,MAAM,0BAAA,GAA6B,CAAC,EAAA,KAAwB;AAzD9D,IAAA,IAAAA,GAAAA,EAAAC,GAAAA;AA0DI,IAAA,OAAA,OAAA,IAAW,EAAA,IACX,GAAG,KAAA,KAAA,CAAA,CACFD,GAAAA,GAAA,IAAI,WAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAiB,QAAA,CAAS,CAAA,GAAA,EAAM,GAAG,IAAI,CAAA,CAAA,CAAA,CAAA,MAAA,CAAQC,MAAA,GAAA,CAAI,WAAA,KAAJ,gBAAAA,GAAAA,CAAiB,QAAA,CAAS,CAAA,CAAA,EAAI,EAAA,CAAG,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA,CAAA;AAEvF,EAAA,IAAI,aAAa,IAAA,CAAK,CAAC,OAAO,0BAAA,CAA2B,EAAE,CAAC,CAAA,EAAG;AAC7D,IAAA,GAAA,CAAI,WAAA,GAAA,CAAc,EAAA,GAAA,GAAA,CAAI,WAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,WAAW,IAAA,EAAM,GAAA,CAAA;AACpD,IAAA,GAAA,CAAI,WAAA,GAAA,CAAc,EAAA,GAAA,GAAA,CAAI,WAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,WAAW,IAAA,EAAM,GAAA,CAAA;AAAA,EACtD;AACF;;;;"}