in services/library/src/main/java/com/google/cloud/pso/bq_snapshot_manager/helpers/Utils.java [142:163]
public static Tuple<TableSpec, Long> getTableSpecWithTimeTravel(TableSpec table, TimeTravelOffsetDays timeTravelOffsetDays, Timestamp referencePoint) {
Long timeTravelMs;
Long refPointMs = timestampToUnixTimeMillis(referencePoint);
if (timeTravelOffsetDays.equals(TimeTravelOffsetDays.DAYS_0)) {
// always use time travel for consistency and traceability
timeTravelMs = refPointMs;
}else{
// use a buffer (milliseconds) to count for the operation time. 1 MIN = 60000 MILLISECONDS
Long bufferMs = timeTravelOffsetDays.equals(TimeTravelOffsetDays.DAYS_7) ? 60 * 60000L : 0L;
// milli seconds per day * number of days
Long timeTravelOffsetMs = (Utils.MILLI_SECONDS_IN_DAY * Long.parseLong(timeTravelOffsetDays.getText()));
timeTravelMs = (refPointMs - timeTravelOffsetMs) + bufferMs;
}
return Tuple.of(new TableSpec(
table.getProject(),
table.getDataset(),
String.format("%s@%s", table.getTable(), timeTravelMs)),
timeTravelMs
);
}