Skip to content

Commit 7d044d1

Browse files
authored
Merge pull request #7856 from googleapis/yvonne/refactor-timestamp-parameters
fix: Refactor the parameters for timestamp expressions and fix bug for timeGranularity lowercase
2 parents 73cb317 + 2882bc9 commit 7d044d1

3 files changed

Lines changed: 64 additions & 210 deletions

File tree

handwritten/firestore/api-report/firestore.api.md

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,7 +1137,7 @@ abstract class Expression implements firestore.Pipelines.Expression, HasUserData
11371137
ifError(catchValue: unknown): FunctionExpression;
11381138
isAbsent(): BooleanExpression;
11391139
isError(): BooleanExpression;
1140-
isType(type: Type): BooleanExpression;
1140+
isType(type: string): BooleanExpression;
11411141
join(delimiterExpression: Expression): Expression;
11421142
join(delimiter: string): Expression;
11431143
last(): AggregateFunction;
@@ -1206,13 +1206,13 @@ abstract class Expression implements firestore.Pipelines.Expression, HasUserData
12061206
subtract(subtrahend: number): FunctionExpression;
12071207
sum(): AggregateFunction;
12081208
timestampAdd(unit: Expression, amount: Expression): FunctionExpression;
1209-
timestampAdd(unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day', amount: number): FunctionExpression;
1209+
timestampAdd(unit: firestore.Pipelines.TimeUnit, amount: number): FunctionExpression;
12101210
timestampDiff(start: Expression, unit: Expression): FunctionExpression;
1211-
timestampDiff(start: string | Expression, unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day'): FunctionExpression;
1211+
timestampDiff(start: string | Expression, unit: firestore.Pipelines.TimeUnit): FunctionExpression;
12121212
timestampExtract(part: firestore.Pipelines.TimePart, timezone?: string | Expression): FunctionExpression;
12131213
timestampExtract(part: Expression, timezone?: string | Expression): FunctionExpression;
12141214
timestampSubtract(unit: Expression, amount: Expression): FunctionExpression;
1215-
timestampSubtract(unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day', amount: number): FunctionExpression;
1215+
timestampSubtract(unit: firestore.Pipelines.TimeUnit, amount: number): FunctionExpression;
12161216
timestampToUnixMicros(): FunctionExpression;
12171217
timestampToUnixMillis(): FunctionExpression;
12181218
timestampToUnixSeconds(): FunctionExpression;
@@ -1418,6 +1418,8 @@ class Firestore implements firestore.Firestore {
14181418
// Warning: (tsdoc-param-tag-with-invalid-name) The @param block should be followed by a valid parameter name: The identifier cannot non-word characters
14191419
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
14201420
constructor(settings?: firestore.Settings);
1421+
// @internal
1422+
get alwaysUseImplicitOrderBy(): boolean;
14211423
// Warning: (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag
14221424
// Warning: (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@"
14231425
batch(): WriteBatch;
@@ -1650,10 +1652,10 @@ function isAbsent(field: string): BooleanExpression;
16501652
function isError(value: Expression): BooleanExpression;
16511653

16521654
// @beta
1653-
function isType(fieldName: string, type: Type): BooleanExpression;
1655+
function isType(fieldName: string, type: string): BooleanExpression;
16541656

16551657
// @beta
1656-
function isType(expression: Expression, type: Type): BooleanExpression;
1658+
function isType(expression: Expression, type: string): BooleanExpression;
16571659

16581660
// @beta
16591661
function join(arrayFieldName: string, delimiter: string): Expression;
@@ -2118,7 +2120,6 @@ declare namespace Pipelines {
21182120
arrayConcat,
21192121
type,
21202122
isType,
2121-
Type,
21222123
timestampTruncate,
21232124
timestampExtract,
21242125
timestampDiff,
@@ -2360,7 +2361,7 @@ export class Query<AppModelType = firestore.DocumentData, DbModelType extends fi
23602361
// Warning: (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
23612362
//
23622363
// @internal
2363-
toProto(transactionOrReadTime?: Uint8Array | Timestamp | api.ITransactionOptions, explainOptions?: firestore.ExplainOptions): api.IRunQueryRequest;
2364+
toProto(transactionOrReadTime?: Uint8Array | Timestamp | api.ITransactionOptions, explainOptions?: firestore.ExplainOptions, forceImplicitOrderBy?: boolean): api.IRunQueryRequest;
23642365
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
23652366
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
23662367
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
@@ -2710,22 +2711,22 @@ export class Timestamp implements firestore.Timestamp {
27102711
function timestampAdd(timestamp: Expression, unit: Expression, amount: Expression): FunctionExpression;
27112712

27122713
// @beta
2713-
function timestampAdd(timestamp: Expression, unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day', amount: number): FunctionExpression;
2714+
function timestampAdd(timestamp: Expression, unit: firestore.Pipelines.TimeUnit, amount: number): FunctionExpression;
27142715

27152716
// @beta
2716-
function timestampAdd(fieldName: string, unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day', amount: number): FunctionExpression;
2717+
function timestampAdd(fieldName: string, unit: firestore.Pipelines.TimeUnit, amount: number): FunctionExpression;
27172718

27182719
// @beta
2719-
function timestampDiff(endFieldName: string, startFieldName: string, unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | Expression): FunctionExpression;
2720+
function timestampDiff(endFieldName: string, startFieldName: string, unit: firestore.Pipelines.TimeUnit | Expression): FunctionExpression;
27202721

27212722
// @beta
2722-
function timestampDiff(endFieldName: string, startExpression: Expression, unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | Expression): FunctionExpression;
2723+
function timestampDiff(endFieldName: string, startExpression: Expression, unit: firestore.Pipelines.TimeUnit | Expression): FunctionExpression;
27232724

27242725
// @beta
2725-
function timestampDiff(endExpression: Expression, startFieldName: string, unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | Expression): FunctionExpression;
2726+
function timestampDiff(endExpression: Expression, startFieldName: string, unit: firestore.Pipelines.TimeUnit | Expression): FunctionExpression;
27262727

27272728
// @beta
2728-
function timestampDiff(endExpression: Expression, startExpression: Expression, unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | Expression): FunctionExpression;
2729+
function timestampDiff(endExpression: Expression, startExpression: Expression, unit: firestore.Pipelines.TimeUnit | Expression): FunctionExpression;
27292730

27302731
// @beta
27312732
function timestampExtract(fieldName: string, part: firestore.Pipelines.TimePart, timezone?: string | Expression): FunctionExpression;
@@ -2743,10 +2744,10 @@ function timestampExtract(timestampExpression: Expression, part: Expression, tim
27432744
function timestampSubtract(timestamp: Expression, unit: Expression, amount: Expression): FunctionExpression;
27442745

27452746
// @beta
2746-
function timestampSubtract(timestamp: Expression, unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day', amount: number): FunctionExpression;
2747+
function timestampSubtract(timestamp: Expression, unit: firestore.Pipelines.TimeUnit, amount: number): FunctionExpression;
27472748

27482749
// @beta
2749-
function timestampSubtract(fieldName: string, unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day', amount: number): FunctionExpression;
2750+
function timestampSubtract(fieldName: string, unit: firestore.Pipelines.TimeUnit, amount: number): FunctionExpression;
27502751

27512752
// @beta
27522753
function timestampToUnixMicros(expr: Expression): FunctionExpression;
@@ -2906,9 +2907,6 @@ function trunc(fieldName: string, decimalPlaces: number | Expression): FunctionE
29062907
// @beta
29072908
function trunc(expression: Expression, decimalPlaces: number | Expression): FunctionExpression;
29082909

2909-
// @beta
2910-
type Type = 'null' | 'array' | 'boolean' | 'bytes' | 'timestamp' | 'geo_point' | 'number' | 'int32' | 'int64' | 'float64' | 'decimal128' | 'map' | 'reference' | 'string' | 'vector' | 'max_key' | 'min_key' | 'object_id' | 'regex' | 'request_timestamp';
2911-
29122910
// Warning: (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag
29132911
// Warning: (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@"
29142912
//
@@ -3148,9 +3146,9 @@ function xor(first: BooleanExpression, second: BooleanExpression, ...additionalC
31483146
// build/types/src/index.d.ts:371:8 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
31493147
// build/types/src/index.d.ts:378:8 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
31503148
// build/types/src/index.d.ts:387:8 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
3151-
// build/types/src/index.d.ts:881:8 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
3152-
// build/types/src/index.d.ts:900:8 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
3153-
// build/types/src/index.d.ts:915:8 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
3149+
// build/types/src/index.d.ts:886:8 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
3150+
// build/types/src/index.d.ts:905:8 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
3151+
// build/types/src/index.d.ts:920:8 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
31543152
// build/types/src/path.d.ts:29:4 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration
31553153
// build/types/src/path.d.ts:31:4 - (tsdoc-undefined-tag) The TSDoc tag "@class" is not defined in this configuration
31563154
// build/types/src/path.d.ts:146:4 - (tsdoc-undefined-tag) The TSDoc tag "@private" is not defined in this configuration

handwritten/firestore/dev/src/pipelines/expression.ts

Lines changed: 21 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -2323,18 +2323,11 @@ export abstract class Expression
23232323
* @returns A new `Expression` representing the resulting timestamp.
23242324
*/
23252325
timestampAdd(
2326-
unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day',
2326+
unit: firestore.Pipelines.TimeUnit,
23272327
amount: number,
23282328
): FunctionExpression;
23292329
timestampAdd(
2330-
unit:
2331-
| Expression
2332-
| 'microsecond'
2333-
| 'millisecond'
2334-
| 'second'
2335-
| 'minute'
2336-
| 'hour'
2337-
| 'day',
2330+
unit: Expression | firestore.Pipelines.TimeUnit,
23382331
amount: Expression | number,
23392332
): FunctionExpression {
23402333
return new FunctionExpression('timestamp_add', [
@@ -2375,18 +2368,11 @@ export abstract class Expression
23752368
* @returns A new `Expression` representing the resulting timestamp.
23762369
*/
23772370
timestampSubtract(
2378-
unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day',
2371+
unit: firestore.Pipelines.TimeUnit,
23792372
amount: number,
23802373
): FunctionExpression;
23812374
timestampSubtract(
2382-
unit:
2383-
| Expression
2384-
| 'microsecond'
2385-
| 'millisecond'
2386-
| 'second'
2387-
| 'minute'
2388-
| 'hour'
2389-
| 'day',
2375+
unit: Expression | firestore.Pipelines.TimeUnit,
23902376
amount: Expression | number,
23912377
): FunctionExpression {
23922378
return new FunctionExpression('timestamp_subtract', [
@@ -2428,18 +2414,11 @@ export abstract class Expression
24282414
*/
24292415
timestampDiff(
24302416
start: string | Expression,
2431-
unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day',
2417+
unit: firestore.Pipelines.TimeUnit,
24322418
): FunctionExpression;
24332419
timestampDiff(
24342420
start: string | Expression,
2435-
unit:
2436-
| 'microsecond'
2437-
| 'millisecond'
2438-
| 'second'
2439-
| 'minute'
2440-
| 'hour'
2441-
| 'day'
2442-
| Expression,
2421+
unit: Expression | firestore.Pipelines.TimeUnit,
24432422
): FunctionExpression {
24442423
return new FunctionExpression('timestamp_diff', [
24452424
this,
@@ -2493,8 +2472,7 @@ export abstract class Expression
24932472
part: firestore.Pipelines.TimePart | Expression,
24942473
timezone?: string | Expression,
24952474
): FunctionExpression {
2496-
const internalPart = isString(part) ? part.toLowerCase() : part;
2497-
const args = [this, valueToDefaultExpr(internalPart)];
2475+
const args = [this, valueToDefaultExpr(part)];
24982476
if (timezone) {
24992477
args.push(valueToDefaultExpr(timezone));
25002478
}
@@ -3123,11 +3101,7 @@ export abstract class Expression
31233101
granularity: firestore.Pipelines.TimeGranularity | Expression,
31243102
timezone?: string | Expression,
31253103
): FunctionExpression {
3126-
const internalGranularity = isString(granularity)
3127-
? granularity.toLowerCase()
3128-
: granularity;
3129-
3130-
const args = [this, valueToDefaultExpr(internalGranularity)];
3104+
const args = [this, valueToDefaultExpr(granularity)];
31313105
if (timezone) {
31323106
args.push(valueToDefaultExpr(timezone));
31333107
}
@@ -8501,7 +8475,7 @@ export function timestampAdd(
85018475
*/
85028476
export function timestampAdd(
85038477
timestamp: Expression,
8504-
unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day',
8478+
unit: firestore.Pipelines.TimeUnit,
85058479
amount: number,
85068480
): FunctionExpression;
85078481

@@ -8521,19 +8495,12 @@ export function timestampAdd(
85218495
*/
85228496
export function timestampAdd(
85238497
fieldName: string,
8524-
unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day',
8498+
unit: firestore.Pipelines.TimeUnit,
85258499
amount: number,
85268500
): FunctionExpression;
85278501
export function timestampAdd(
85288502
timestamp: Expression | string,
8529-
unit:
8530-
| Expression
8531-
| 'microsecond'
8532-
| 'millisecond'
8533-
| 'second'
8534-
| 'minute'
8535-
| 'hour'
8536-
| 'day',
8503+
unit: Expression | firestore.Pipelines.TimeUnit,
85378504
amount: Expression | number,
85388505
): FunctionExpression {
85398506
const normalizedTimestamp = fieldOrExpression(timestamp);
@@ -8578,7 +8545,7 @@ export function timestampSubtract(
85788545
*/
85798546
export function timestampSubtract(
85808547
timestamp: Expression,
8581-
unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day',
8548+
unit: firestore.Pipelines.TimeUnit,
85828549
amount: number,
85838550
): FunctionExpression;
85848551

@@ -8598,19 +8565,12 @@ export function timestampSubtract(
85988565
*/
85998566
export function timestampSubtract(
86008567
fieldName: string,
8601-
unit: 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day',
8568+
unit: firestore.Pipelines.TimeUnit,
86028569
amount: number,
86038570
): FunctionExpression;
86048571
export function timestampSubtract(
86058572
timestamp: Expression | string,
8606-
unit:
8607-
| Expression
8608-
| 'microsecond'
8609-
| 'millisecond'
8610-
| 'second'
8611-
| 'minute'
8612-
| 'hour'
8613-
| 'day',
8573+
unit: Expression | firestore.Pipelines.TimeUnit,
86148574
amount: Expression | number,
86158575
): FunctionExpression {
86168576
const normalizedTimestamp = fieldOrExpression(timestamp);
@@ -9605,7 +9565,7 @@ export function timestampTruncate(
96059565
timezone?: string | Expression,
96069566
): FunctionExpression {
96079567
const internalGranularity = isString(granularity)
9608-
? valueToDefaultExpr(granularity.toLowerCase())
9568+
? valueToDefaultExpr(granularity)
96099569
: granularity;
96109570
return fieldOrExpression(fieldNameOrExpression).timestampTruncate(
96119571
internalGranularity,
@@ -9631,14 +9591,7 @@ export function timestampTruncate(
96319591
export function timestampDiff(
96329592
endFieldName: string,
96339593
startFieldName: string,
9634-
unit:
9635-
| 'microsecond'
9636-
| 'millisecond'
9637-
| 'second'
9638-
| 'minute'
9639-
| 'hour'
9640-
| 'day'
9641-
| Expression,
9594+
unit: firestore.Pipelines.TimeUnit | Expression,
96429595
): FunctionExpression;
96439596

96449597
/**
@@ -9659,14 +9612,7 @@ export function timestampDiff(
96599612
export function timestampDiff(
96609613
endFieldName: string,
96619614
startExpression: Expression,
9662-
unit:
9663-
| 'microsecond'
9664-
| 'millisecond'
9665-
| 'second'
9666-
| 'minute'
9667-
| 'hour'
9668-
| 'day'
9669-
| Expression,
9615+
unit: firestore.Pipelines.TimeUnit | Expression,
96709616
): FunctionExpression;
96719617

96729618
/**
@@ -9687,14 +9633,7 @@ export function timestampDiff(
96879633
export function timestampDiff(
96889634
endExpression: Expression,
96899635
startFieldName: string,
9690-
unit:
9691-
| 'microsecond'
9692-
| 'millisecond'
9693-
| 'second'
9694-
| 'minute'
9695-
| 'hour'
9696-
| 'day'
9697-
| Expression,
9636+
unit: firestore.Pipelines.TimeUnit | Expression,
96989637
): FunctionExpression;
96999638

97009639
/**
@@ -9715,26 +9654,12 @@ export function timestampDiff(
97159654
export function timestampDiff(
97169655
endExpression: Expression,
97179656
startExpression: Expression,
9718-
unit:
9719-
| 'microsecond'
9720-
| 'millisecond'
9721-
| 'second'
9722-
| 'minute'
9723-
| 'hour'
9724-
| 'day'
9725-
| Expression,
9657+
unit: firestore.Pipelines.TimeUnit | Expression,
97269658
): FunctionExpression;
97279659
export function timestampDiff(
97289660
endFieldNameOrExpression: string | Expression,
97299661
startFieldNameOrExpression: string | Expression,
9730-
unit:
9731-
| 'microsecond'
9732-
| 'millisecond'
9733-
| 'second'
9734-
| 'minute'
9735-
| 'hour'
9736-
| 'day'
9737-
| Expression,
9662+
unit: firestore.Pipelines.TimeUnit | Expression,
97389663
): FunctionExpression {
97399664
const normalizedEnd = fieldOrExpression(endFieldNameOrExpression);
97409665
const normalizedStart = fieldOrExpression(startFieldNameOrExpression);
@@ -9839,7 +9764,7 @@ export function timestampExtract(
98399764
timezone?: string | Expression,
98409765
): FunctionExpression {
98419766
return fieldOrExpression(fieldNameOrExpression).timestampExtract(
9842-
valueToDefaultExpr(isString(part) ? part.toLowerCase() : part),
9767+
valueToDefaultExpr(part),
98439768
timezone,
98449769
);
98459770
}

0 commit comments

Comments
 (0)