Skip to content
This repository was archived by the owner on Feb 7, 2026. It is now read-only.

Commit b70d3a4

Browse files
authored
feat: partial metadata projection (#1258)
* changing system tests and updating types * preliminary type interface changes * complete documentation and system-test changes * updating system-tests for getting metadata
1 parent 10e151f commit b70d3a4

2 files changed

Lines changed: 37 additions & 1 deletion

File tree

src/table.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,12 @@ class Table extends ServiceObject {
373373
* is normally required for the `create` method must be contained within
374374
* this object as well.
375375
*
376+
* If you wish to get a selection of metadata instead of the full table metadata
377+
* (retrieved by both Table#get by default and by Table#getMetadata), use
378+
* the `options` parameter to set the `view` and/or `selectedFields` query parameters.
379+
*
380+
* See {@link https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/get#TableMetadataView| Tables.get and TableMetadataView }
381+
*
376382
* @method Table#get
377383
* @param {options} [options] Configuration object.
378384
* @param {boolean} [options.autoCreate=false] Automatically create the
@@ -392,10 +398,18 @@ class Table extends ServiceObject {
392398
*
393399
* const table = dataset.table('my-table');
394400
*
401+
* const options = {
402+
* view: "BASIC"
403+
* }
404+
*
395405
* table.get((err, table, apiResponse) => {
396406
* // `table.metadata` has been populated.
397407
* });
398408
*
409+
* table.get(options, (err, table, apiResponse) => {
410+
* // A selection of `table.metadata` has been populated
411+
* })
412+
*
399413
* //-
400414
* // If the callback is omitted, we'll return a Promise.
401415
* //-

system-test/bigquery.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,6 @@ describe('BigQuery', () => {
866866
stream
867867
.pipe(table.createInsertStream())
868868
.on('response', (response: InsertRowsStreamResponse) => {
869-
console.log(response);
870869
assert.deepStrictEqual(response.kind, expectedResponse);
871870
done();
872871
});
@@ -888,9 +887,32 @@ describe('BigQuery', () => {
888887
const description = 'catsandstuff';
889888
await table.setMetadata({description});
890889
const [metadata] = await table.getMetadata();
890+
const metadataProps = Object.keys(metadata);
891+
assert.strictEqual(metadataProps.includes('numBytes'), true);
892+
assert.notStrictEqual(metadata.numBytes, undefined);
893+
assert.strictEqual(metadataProps.includes('lastModifiedTime'), true);
894+
assert.notStrictEqual(metadata.lastModifiedTime, undefined);
891895
assert.strictEqual(metadata.description, description);
892896
});
893897

898+
it('should set & get partial metadata', async () => {
899+
const options = {
900+
view: 'BASIC',
901+
};
902+
const [basicMetadata] = await table.get(options);
903+
const basicMetadataProps = Object.values(
904+
Object.keys(basicMetadata.metadata)
905+
);
906+
907+
assert.strictEqual(basicMetadataProps.includes('numBytes'), false);
908+
assert.strictEqual(basicMetadata.metadata.numBytes, undefined);
909+
assert.strictEqual(
910+
basicMetadataProps.includes('lastModifiedTime'),
911+
false
912+
);
913+
assert.strictEqual(basicMetadata.metadata.lastModifiedTime, undefined);
914+
});
915+
894916
describe('copying', () => {
895917
interface TableItem {
896918
data?: {tableId?: number};

0 commit comments

Comments
 (0)