diff --git a/package-lock.json b/package-lock.json index eb4cbce1..0896562e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-couchbase", - "version": "2.2.7", + "version": "2.2.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "vscode-couchbase", - "version": "2.2.7", + "version": "2.2.8", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@aws-sdk/client-dynamodb": "^3.602.0", diff --git a/package.json b/package.json index 3aaa8359..1af710bc 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-couchbase", "displayName": "Couchbase", "description": "", - "version": "2.2.7", + "version": "2.2.8", "engines": { "vscode": "^1.63.1" }, @@ -1410,7 +1410,7 @@ "type": "object", "additionalProperties": { "type": "string", - "value": "string" + "value": ["string", "number", "boolean", "object", "array"] }, "title": "User Named Parameters", "default": {}, diff --git a/src/commands/documents/getDocumentMetaData.ts b/src/commands/documents/getDocumentMetaData.ts index 2df33531..43252091 100644 --- a/src/commands/documents/getDocumentMetaData.ts +++ b/src/commands/documents/getDocumentMetaData.ts @@ -34,7 +34,7 @@ export const getDocumentMetaData = async (node: DocumentNode, context: vscode.Ex if (hasQueryService(connection.services)) { try { result = await connection.cluster?.query( - `SELECT META(b).* FROM \`${node.bucketName}\`.\`${node.scopeName}\`.\`${node.collectionName}\` b WHERE META(b).id = \"${node.documentName}\"` + `SELECT META(b) as meta, XATTRS(b) as xattrs FROM \`${node.bucketName}\`.\`${node.scopeName}\`.\`${node.collectionName}\` b WHERE META(b).id = "${node.documentName}"` ); result = result?.rows; } catch { diff --git a/src/types/IKeyValuePair.ts b/src/types/IKeyValuePair.ts index 2dea3069..0ed18d7c 100644 --- a/src/types/IKeyValuePair.ts +++ b/src/types/IKeyValuePair.ts @@ -1,6 +1,5 @@ - export interface IKeyValuePair{ key: string; - value: string; + value: any; } \ No newline at end of file diff --git a/src/util/namedParameters.ts b/src/util/namedParameters.ts index 209969d8..3a962827 100644 --- a/src/util/namedParameters.ts +++ b/src/util/namedParameters.ts @@ -6,13 +6,25 @@ import path from 'path'; export function getUsersNamedParameters(): IKeyValuePair[] { try { let config = vscode.workspace.getConfiguration('couchbase'); - let userNamedParametersObject = config.get<{ [key: string]: string }>('workbench.userNamedParameters'); + let userNamedParametersObject = config.get<{ [key: string]: any }>('workbench.userNamedParameters'); if (!userNamedParametersObject) { return []; } let userNamedParameters: IKeyValuePair[] = Object.entries( userNamedParametersObject - ).map(([key, value]) => ({ key, value })); + ).map(([key, value]) => { + // Non string returned as is + if (typeof value !== 'string') { + return { key, value }; + } + try { + const parsedValue = JSON.parse(value); + return { key, value: parsedValue }; + } catch (e) { + // Default to returning the string value if JSON parsing fails + return { key, value }; + } + }); return userNamedParameters; } catch (error) { console.log("Error reading userNamedParameters from config:", error);