diff --git a/CHANGELOG.md b/CHANGELOG.md index d3448e64..f4ed3666 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,22 @@ [1]: https://www.npmjs.com/package/@google-cloud/bigquery?activeTab=versions +## [7.2.0](https://github.com/googleapis/nodejs-bigquery/compare/v7.1.1...v7.2.0) (2023-08-17) + + +### Features + +* Partial metadata projection ([#1258](https://github.com/googleapis/nodejs-bigquery/issues/1258)) ([b70d3a4](https://github.com/googleapis/nodejs-bigquery/commit/b70d3a4300d8efdea45f89766155110ead392f12)) + + +### Bug Fixes + +* **deps:** Update dependency @google-cloud/common to v5 ([#1253](https://github.com/googleapis/nodejs-bigquery/issues/1253)) ([0cbfdcd](https://github.com/googleapis/nodejs-bigquery/commit/0cbfdcd45870c7e41b748883a6780422e091376b)) +* **deps:** Update dependency @google-cloud/paginator to v5 ([#1254](https://github.com/googleapis/nodejs-bigquery/issues/1254)) ([658ff1a](https://github.com/googleapis/nodejs-bigquery/commit/658ff1aa8ac47393aed48422538a8cda1747a4e7)) +* **deps:** Update dependency @google-cloud/precise-date to v4 ([#1261](https://github.com/googleapis/nodejs-bigquery/issues/1261)) ([7f12f7d](https://github.com/googleapis/nodejs-bigquery/commit/7f12f7dd027b6f511df664d5607af0d78be2bf2b)) +* **deps:** Update dependency @google-cloud/promisify to v4 ([#1252](https://github.com/googleapis/nodejs-bigquery/issues/1252)) ([6f04f39](https://github.com/googleapis/nodejs-bigquery/commit/6f04f39747a085cd370fbef35ab0afd578b26c94)) +* Manual update for renovate-bot google cloud storage v7 ([#1262](https://github.com/googleapis/nodejs-bigquery/issues/1262)) ([b58fc29](https://github.com/googleapis/nodejs-bigquery/commit/b58fc292349a25e3a88ebc1a37f45cbd0987fd7d)) + ## [7.1.1](https://github.com/googleapis/nodejs-bigquery/compare/v7.1.0...v7.1.1) (2023-08-03) diff --git a/package.json b/package.json index 85f0f99f..5490b962 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@google-cloud/bigquery", "description": "Google BigQuery Client Library for Node.js", - "version": "7.1.1", + "version": "7.2.0", "license": "Apache-2.0", "author": "Google LLC", "engines": { @@ -48,10 +48,10 @@ "precompile": "gts clean" }, "dependencies": { - "@google-cloud/common": "^4.0.0", - "@google-cloud/paginator": "^4.0.0", - "@google-cloud/precise-date": "^3.0.1", - "@google-cloud/promisify": "^3.0.0", + "@google-cloud/common": "^5.0.0", + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/precise-date": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", "arrify": "^2.0.1", "big.js": "^6.0.0", "duplexify": "^4.0.0", @@ -61,7 +61,7 @@ "uuid": "^9.0.0" }, "devDependencies": { - "@google-cloud/storage": "^6.0.0", + "@google-cloud/storage": "^7.0.0", "@types/big.js": "^6.2.0", "@types/extend": "^3.0.1", "@types/is": "0.0.22", @@ -76,8 +76,8 @@ "eslint-plugin-prettier": "^5.0.0", "gts": "^5.0.0", "jsdoc": "^4.0.0", - "jsdoc-fresh": "^2.0.0", - "jsdoc-region-tag": "^2.0.0", + "jsdoc-fresh": "^3.0.0", + "jsdoc-region-tag": "^3.0.0", "linkinator": "^5.0.0", "mocha": "^9.2.2", "pack-n-play": "^1.0.0-2", diff --git a/samples/authViewTutorial.js b/samples/authViewTutorial.js index ed8a416c..7710c7da 100644 --- a/samples/authViewTutorial.js +++ b/samples/authViewTutorial.js @@ -103,9 +103,8 @@ function main( sharedMetadata.access = sharedAccessEntries; // Make API request to update dataset metadata - const [updatedSharedMetadata] = await sharedDataset.setMetadata( - sharedMetadata - ); + const [updatedSharedMetadata] = + await sharedDataset.setMetadata(sharedMetadata); console.log(`Dataset ${updatedSharedMetadata.id} updated.`); // [END bigquery_avt_shared_dataset_access] @@ -129,9 +128,8 @@ function main( sourceMetadata.access = sourceAccessEntries; // Make API request to update source dataset metadata - const [updatedSourceMetadata] = await sourceDataset.setMetadata( - sourceMetadata - ); + const [updatedSourceMetadata] = + await sourceDataset.setMetadata(sourceMetadata); console.log(`Dataset ${updatedSourceMetadata.id} updated.`); // [END bigquery_avt_source_dataset_access] diff --git a/samples/package.json b/samples/package.json index b854ae97..8e494c7c 100644 --- a/samples/package.json +++ b/samples/package.json @@ -16,14 +16,14 @@ "test": "mocha --timeout 200000" }, "dependencies": { - "@google-cloud/bigquery": "^7.1.1", - "@google-cloud/storage": "^6.0.0", + "@google-cloud/bigquery": "^7.2.0", + "@google-cloud/storage": "^7.0.0", "google-auth-library": "^9.0.0", "readline-promise": "^1.0.4", "yargs": "^17.0.0" }, "devDependencies": { - "@google-cloud/datacatalog": "^3.0.0", + "@google-cloud/datacatalog": "^4.0.0", "chai": "^4.2.0", "mocha": "^8.0.0", "proxyquire": "^2.1.3", diff --git a/src/table.ts b/src/table.ts index dae1ef04..c555e41e 100644 --- a/src/table.ts +++ b/src/table.ts @@ -373,6 +373,12 @@ class Table extends ServiceObject { * is normally required for the `create` method must be contained within * this object as well. * + * If you wish to get a selection of metadata instead of the full table metadata + * (retrieved by both Table#get by default and by Table#getMetadata), use + * the `options` parameter to set the `view` and/or `selectedFields` query parameters. + * + * See {@link https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/get#TableMetadataView| Tables.get and TableMetadataView } + * * @method Table#get * @param {options} [options] Configuration object. * @param {boolean} [options.autoCreate=false] Automatically create the @@ -392,10 +398,18 @@ class Table extends ServiceObject { * * const table = dataset.table('my-table'); * + * const options = { + * view: "BASIC" + * } + * * table.get((err, table, apiResponse) => { * // `table.metadata` has been populated. * }); * + * table.get(options, (err, table, apiResponse) => { + * // A selection of `table.metadata` has been populated + * }) + * * //- * // If the callback is omitted, we'll return a Promise. * //- diff --git a/system-test/bigquery.ts b/system-test/bigquery.ts index fb6b3f39..fa3b21d5 100644 --- a/system-test/bigquery.ts +++ b/system-test/bigquery.ts @@ -866,7 +866,6 @@ describe('BigQuery', () => { stream .pipe(table.createInsertStream()) .on('response', (response: InsertRowsStreamResponse) => { - console.log(response); assert.deepStrictEqual(response.kind, expectedResponse); done(); }); @@ -888,9 +887,32 @@ describe('BigQuery', () => { const description = 'catsandstuff'; await table.setMetadata({description}); const [metadata] = await table.getMetadata(); + const metadataProps = Object.keys(metadata); + assert.strictEqual(metadataProps.includes('numBytes'), true); + assert.notStrictEqual(metadata.numBytes, undefined); + assert.strictEqual(metadataProps.includes('lastModifiedTime'), true); + assert.notStrictEqual(metadata.lastModifiedTime, undefined); assert.strictEqual(metadata.description, description); }); + it('should set & get partial metadata', async () => { + const options = { + view: 'BASIC', + }; + const [basicMetadata] = await table.get(options); + const basicMetadataProps = Object.values( + Object.keys(basicMetadata.metadata) + ); + + assert.strictEqual(basicMetadataProps.includes('numBytes'), false); + assert.strictEqual(basicMetadata.metadata.numBytes, undefined); + assert.strictEqual( + basicMetadataProps.includes('lastModifiedTime'), + false + ); + assert.strictEqual(basicMetadata.metadata.lastModifiedTime, undefined); + }); + describe('copying', () => { interface TableItem { data?: {tableId?: number}; @@ -1796,7 +1818,15 @@ describe('BigQuery', () => { }); const deleteBucketPromises = buckets - .filter(bucket => isResourceStale(bucket.metadata.timeCreated)) + .filter(bucket => { + try { + if (typeof bucket.metadata.timeCreated === 'string') { + isResourceStale(bucket.metadata.timeCreated); + } + } catch { + throw Error('timeCreated on type BucketMetadata cannot be undefined'); + } + }) .map(async b => { const [files] = await b.getFiles(); await Promise.all(files.map(f => f.delete()));