Skip to content

Commit e9f133b

Browse files
authored
feat: support JSON query param (#1329)
1 parent 9e85219 commit e9f133b

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

src/bigquery.ts

+4
Original file line numberDiff line numberDiff line change
@@ -1005,6 +1005,8 @@ export class BigQuery extends Service {
10051005
'GEOGRAPHY',
10061006
'ARRAY',
10071007
'STRUCT',
1008+
'JSON',
1009+
'RANGE',
10081010
];
10091011

10101012
if (is.array(providedType)) {
@@ -1182,6 +1184,8 @@ export class BigQuery extends Service {
11821184
},
11831185
{}
11841186
);
1187+
} else if (typeName === 'JSON' && is.object(value)) {
1188+
queryParameter.parameterValue!.value = JSON.stringify(value);
11851189
} else {
11861190
queryParameter.parameterValue!.value = BigQuery._getValue(
11871191
value,

test/bigquery.ts

+27
Original file line numberDiff line numberDiff line change
@@ -1521,6 +1521,33 @@ describe('BigQuery', () => {
15211521
assert.deepStrictEqual(param, expectedParam);
15221522
});
15231523

1524+
it('should format JSON types', () => {
1525+
const typeName = 'JSON';
1526+
const value = {
1527+
foo: 'bar',
1528+
};
1529+
const strValue = JSON.stringify(value);
1530+
assert.deepStrictEqual(BigQuery.valueToQueryParameter_(value, typeName), {
1531+
parameterType: {
1532+
type: typeName,
1533+
},
1534+
parameterValue: {
1535+
value: strValue,
1536+
},
1537+
});
1538+
assert.deepStrictEqual(
1539+
BigQuery.valueToQueryParameter_(strValue, typeName),
1540+
{
1541+
parameterType: {
1542+
type: typeName,
1543+
},
1544+
parameterValue: {
1545+
value: strValue,
1546+
},
1547+
}
1548+
);
1549+
});
1550+
15241551
it('should format all other types', () => {
15251552
const typeName = 'ANY-TYPE';
15261553
sandbox.stub(BigQuery, 'getTypeDescriptorFromValue_').returns({

0 commit comments

Comments
 (0)