From 8be2fa05210f24ee9407a937063ce828fb28c3a3 Mon Sep 17 00:00:00 2001 From: Faran Javed Date: Sat, 29 Aug 2026 01:27:58 +0500 Subject: [PATCH] fix: jsquery prepared query --- .../src/comps/queries/libraryQuery.tsx | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/client/packages/lowcoder/src/comps/queries/libraryQuery.tsx b/client/packages/lowcoder/src/comps/queries/libraryQuery.tsx index e1b13744bf..1693f85638 100644 --- a/client/packages/lowcoder/src/comps/queries/libraryQuery.tsx +++ b/client/packages/lowcoder/src/comps/queries/libraryQuery.tsx @@ -2,7 +2,6 @@ import { default as LoadingOutlined } from "@ant-design/icons/LoadingOutlined"; import { default as Spin } from "antd/es/spin"; import DataSourceIcon from "components/DataSourceIcon"; import { ContextControlType, ContextJsonControl } from "comps/controls/contextCodeControl"; -import { FunctionControl } from "comps/controls/codeControl"; import { trans } from "i18n"; import { CompAction, @@ -42,8 +41,6 @@ import { toQueryView } from "./queryCompUtils"; import { getGlobalSettings } from "comps/utils/globalSettings"; import { QUERY_EXECUTION_ERROR, QUERY_EXECUTION_OK } from "../../constants/queryConstants"; import type { SandBoxOption } from "lowcoder-core/src/eval/utils/evalScript"; -import { QueryLibraryApi } from "@lowcoder-ee/api/queryLibraryApi"; -import { validateResponse } from "@lowcoder-ee/api/apiUtils"; import { JSONValue } from "@lowcoder-ee/util/jsonTypes"; const NoInputsWrapper = styled.div` @@ -132,7 +129,6 @@ type QueryLibraryUpdateAction = { const childrenMap = { libraryQueryId: valueComp(""), libraryQueryRecordId: valueComp("latest"), - libraryQueryType: valueComp(""), libraryQueryDSL: valueComp(null), inputs: InputsComp, error: stateComp(""), @@ -146,7 +142,6 @@ export const LibraryQuery = class extends LibraryQueryBase { readonly isReady: boolean = false; private value: DataType | undefined; - private queryInfo: any = null; constructor(params: CompParams) { super(params); @@ -154,10 +149,8 @@ export const LibraryQuery = class extends LibraryQueryBase { } override getView() { - // Check if this is a JS query const queryInfo = this.children.libraryQueryDSL.getView() as any; - const queryType = this.children.libraryQueryType.getView() as any; - if (queryType === "js") { + if (queryInfo?.query?.compType === "js") { return async (props: any) => { try { const { orgCommonSettings } = getGlobalSettings(); @@ -187,7 +180,7 @@ export const LibraryQuery = class extends LibraryQueryBase { return current ?? match; }); } - + acc[name] = isDynamicSegment(unevaledValue) ? value : unevaledValue; return acc; }, {} as Record); @@ -231,10 +224,12 @@ export const LibraryQuery = class extends LibraryQueryBase { override reduce(action: CompAction): this { if (isMyCustomAction(action, "queryLibraryUpdate")) { - const isJSQuery = this.children.libraryQueryType.getView() === 'js' - const queryDSL = isJSQuery ? action.value?.dsl : null; - const queryDSLValue = this.children.libraryQueryDSL.reduce(this.children.libraryQueryDSL.changeValueAction(queryDSL)) - + const fetchedDSL = action.value?.dsl; + const queryDSL = fetchedDSL?.query?.compType === "js" ? fetchedDSL : null; + const queryDSLValue = this.children.libraryQueryDSL.reduce( + this.children.libraryQueryDSL.changeValueAction(queryDSL) + ); + const inputs = this.children.inputs.setInputs(action.value?.dsl?.["inputs"] ?? []); return setFieldsNoTypeCheck(this, { children: { ...this.children, inputs: inputs, libraryQueryDSL: queryDSLValue }, @@ -257,6 +252,9 @@ const PropertyView = (props: { comp: InstanceType }) => { const info = queryLibraryRecord[queryId]?.[recordId]; useEffect(() => { + if (info === undefined) { + return; + } dispatch( customAction({ type: "queryLibraryUpdate", dsl: info }, true) ); @@ -326,17 +324,14 @@ const PropertyView = (props: { comp: InstanceType }) => { value: meta.libraryQueryMetaView.id, }))} value={queryId ?? queryLibraryMeta[0]?.libraryQueryMetaView.id} - onChange={(value) => { - const queryDSL = queryLibraryMeta[value]?.libraryQueryMetaView || null; - const { datasourceType } = queryDSL as any; - - props.comp.dispatch( + onChange={(value) => + dispatch( multiChangeAction({ libraryQueryId: changeValueAction(value, false), - libraryQueryType: changeValueAction(datasourceType, false), + libraryQueryDSL: changeValueAction(null, false), }) ) - }} + } /> }) => { })) ?? []), ]} value={recordId} - onChange={(value) => dispatch(props.comp.changeChildAction("libraryQueryRecordId", value))} + onChange={(value) => + dispatch( + multiChangeAction({ + libraryQueryRecordId: changeValueAction(value, false), + libraryQueryDSL: changeValueAction(null, false), + }) + ) + } /> {getInputsView()} @@ -368,4 +370,4 @@ const PropertyView = (props: { comp: InstanceType }) => { const QueryLabelWrapper = styled.div` display: flex; align-items: center; -`; \ No newline at end of file +`;