Skip to content

Commit b452cfb

Browse files
authored
fix(firestore-bigquery-export): fixed timestamp as a field-name partitioning
2 parents 79ae81b + a57fc8d commit b452cfb

File tree

14 files changed

+5898
-24
lines changed

14 files changed

+5898
-24
lines changed

firestore-bigquery-export/firestore-bigquery-change-tracker/package-lock.json

Lines changed: 5832 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

firestore-bigquery-export/firestore-bigquery-change-tracker/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"url": "github.com/firebase/extensions.git",
66
"directory": "firestore-bigquery-export/firestore-bigquery-change-tracker"
77
},
8-
"version": "1.1.33",
8+
"version": "1.1.34",
99
"description": "Core change-tracker library for Cloud Firestore Collection BigQuery Exports",
1010
"main": "./lib/index.js",
1111
"scripts": {

firestore-bigquery-export/firestore-bigquery-change-tracker/src/__tests__/bigquery/alternativeProject.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ describe("Using an alternative bigquery project", () => {
2121
randomID = (Math.random() + 1).toString(36).substring(7);
2222
datasetId = `dataset_${randomID}`;
2323
tableId = `table_${randomID}`;
24-
bq = new BigQuery();
24+
bq = new BigQuery({ projectId: process.env.PROJECT_ID });
2525
});
2626
describe("has a valid alternative project id", () => {
2727
beforeEach(async () => {

firestore-bigquery-export/firestore-bigquery-change-tracker/src/__tests__/bigquery/checkUpdates.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010

1111
process.env.PROJECT_ID = "extensions-testing";
1212

13-
const bq: BigQuery = new BigQuery();
13+
const bq: BigQuery = new BigQuery({ projectId: process.env.PROJECT_ID });
1414
const event: FirestoreDocumentChangeEvent = changeTrackerEvent({});
1515
let randomID: string;
1616
let datasetId: string;
@@ -736,6 +736,7 @@ describe("Checking updates", () => {
736736
}).record([event]);
737737

738738
const raw_changelog_table = bq.dataset(datasetId).table(tableId_raw);
739+
739740
const [metadata] = await raw_changelog_table.getMetadata();
740741

741742
expect(

firestore-bigquery-export/firestore-bigquery-change-tracker/src/__tests__/bigquery/clustering.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { deleteTable } from "../fixtures/clearTables";
66

77
process.env.PROJECT_ID = "extensions-testing";
88

9-
const bq: BigQuery = new BigQuery();
9+
const bq: BigQuery = new BigQuery({ projectId: process.env.PROJECT_ID });
1010
const event: FirestoreDocumentChangeEvent = changeTrackerEvent({});
1111
let randomID: string;
1212
let datasetId: string;

firestore-bigquery-export/firestore-bigquery-change-tracker/src/__tests__/bigquery/e2e.test.ts

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ process.env.PROJECT_ID = "extensions-testing";
1818
const consoleLogSpy = jest.spyOn(logger, "log").mockImplementation();
1919
const consoleLogSpyWarn = jest.spyOn(logger, "warn").mockImplementation();
2020

21-
const bq: BigQuery = new BigQuery();
21+
const bq: BigQuery = new BigQuery({ projectId: process.env.PROJECT_ID });
2222
const event: FirestoreDocumentChangeEvent = changeTrackerEvent({});
2323
let randomID: string;
2424
let datasetId: string;
@@ -267,6 +267,41 @@ describe("e2e", () => {
267267
);
268268
});
269269

270+
test("successfully partitions with a valid Firebase Timestamp value with `timestamp` as field name and Timestamp type", async () => {
271+
const created = firestore.Timestamp.now();
272+
const expectedDate = created.toDate().toISOString().substring(0, 22);
273+
274+
const event: FirestoreDocumentChangeEvent = changeTrackerEvent({
275+
data: { created },
276+
});
277+
278+
await changeTracker({
279+
datasetId,
280+
tableId,
281+
timePartitioning: "DAY",
282+
timePartitioningField: "timestamp",
283+
timePartitioningFieldType: "TIMESTAMP",
284+
timePartitioningFirestoreField: "created",
285+
}).record([event]);
286+
287+
const [metadata] = await dataset.table(`${tableId_raw}`).getMetadata();
288+
289+
const [changeLogRows] = await getBigQueryTableData(
290+
process.env.PROJECT_ID,
291+
datasetId,
292+
tableId
293+
);
294+
295+
expect(metadata.timePartitioning).toBeDefined();
296+
expect(metadata.timePartitioning.type).toEqual("DAY");
297+
expect(metadata.timePartitioning.field).toEqual("timestamp");
298+
299+
//TODO: check data has been added successfully
300+
expect(changeLogRows[0].timestamp.value).toBe(
301+
BigQuery.timestamp(created.toDate()).value
302+
);
303+
});
304+
270305
test("old_data is null if is not provided", async () => {
271306
const event: FirestoreDocumentChangeEvent = changeTrackerEvent({
272307
data: { foo: "foo" },

firestore-bigquery-export/firestore-bigquery-change-tracker/src/__tests__/bigquery/partitioning.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { ChangeType, FirestoreDocumentChangeEvent } from "../..";
66
import { FirestoreBigQueryEventHistoryTrackerConfig } from "../../bigquery";
77
import { Partitioning } from "../../bigquery/partitioning";
88
import { deleteTable } from "../fixtures/clearTables";
9-
import { changeTracker } from "../fixtures/changeTracker";
109

1110
let bq: BigQuery;
1211
let dataset: Dataset;
@@ -16,7 +15,7 @@ let datasetId: string;
1615

1716
describe("processing partitions on a new table", () => {
1817
beforeAll(async () => {
19-
bq = new BigQuery();
18+
bq = new BigQuery({ projectId: process.env.PROJECT_ID });
2019
randomID = (Math.random() + 1).toString(36).substring(7);
2120
datasetId = `bq_${randomID}`;
2221
[dataset] = await bq.createDataset(datasetId, {

firestore-bigquery-export/firestore-bigquery-change-tracker/src/__tests__/bigquery/stresstest.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { ChangeType } from "../..";
77
import { buildLatestSnapshotViewQuery } from "../../bigquery/snapshot";
88
process.env.PROJECT_ID = "extensions-testing";
99

10-
const bq = new BigQuery();
10+
const bq = new BigQuery({ projectId: process.env.PROJECT_ID });
1111
let event: FirestoreDocumentChangeEvent;
1212
let randomID: string;
1313
let datasetId: string;

firestore-bigquery-export/firestore-bigquery-change-tracker/src/__tests__/bigquery/wildcardDocument.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { deleteTable } from "../fixtures/clearTables";
66

77
process.env.PROJECT_ID = "extensions-testing";
88

9-
const bq = new BigQuery();
9+
const bq = new BigQuery({ projectId: process.env.PROJECT_ID });
1010
let event: FirestoreDocumentChangeEvent;
1111
let randomID: string;
1212
let datasetId: string;

firestore-bigquery-export/firestore-bigquery-change-tracker/src/__tests__/fixtures/queries.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export const defaultQuery = (
99
LIMIT 1`;
1010

1111
export const getBigQueryTableData = async (bqProjectId, datasetId, tableId) => {
12-
const bq = new BigQuery();
12+
const bq = new BigQuery({ projectId: bqProjectId });
1313

1414
// Setup queries
1515
const [changeLogQuery] = await bq.createQueryJob({

0 commit comments

Comments
 (0)