Skip to content

Commit 705e9f9

Browse files
Make ServerValue.increment() public (#2852)
1 parent b8cf437 commit 705e9f9

File tree

5 files changed

+22
-11
lines changed

5 files changed

+22
-11
lines changed

packages/database-types/index.d.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,8 @@ export interface Reference extends Query {
121121
}
122122

123123
export interface ServerValue {
124-
TIMESTAMP: {
125-
'.sv': string;
126-
};
124+
TIMESTAMP: Object;
125+
increment(delta: number) : Object;
127126
}
128127

129128
export interface ThenableReference extends Reference, Promise<Reference> {}

packages/database/CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
# Unreleased
2+
- [feature] Added ServerValue.increment() to support atomic field value increments
3+
without transactions.
4+
5+
# Released
26
- [fixed] Fixed an issue that caused large numeric values with leading zeros to
37
not always be sorted correctly.
4-
58
- [changed] Internal cleanup to Node.JS support.
69

710
# 6.4.0

packages/database/src/api/Database.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ export class Database implements FirebaseService {
4040
TIMESTAMP: {
4141
'.sv': 'timestamp'
4242
},
43-
_increment: (x: number) => {
43+
increment: (delta: number) => {
4444
return {
4545
'.sv': {
46-
'increment': x
46+
'increment': delta
4747
}
4848
};
4949
}

packages/database/test/servervalues.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ describe('ServerValue tests', () => {
4747
// node (i.e. ChildrenNode.EMPTY_NODE) because there is not yet any synced
4848
// data.
4949
const node = getRandomNode() as Reference;
50-
await node.set(Database.ServerValue._increment(1));
50+
await node.set(Database.ServerValue.increment(1));
5151
});
5252

5353
describe('handles increments', () => {
@@ -64,7 +64,7 @@ describe('ServerValue tests', () => {
6464
node.database.goOffline();
6565
}
6666

67-
const addOne = Database.ServerValue._increment(1);
67+
const addOne = Database.ServerValue.increment(1);
6868

6969
const values: any = [];
7070
const expected: any = [];
@@ -110,7 +110,7 @@ describe('ServerValue tests', () => {
110110
});
111111

112112
await node.update({
113-
'child/increment': Database.ServerValue._increment(1),
113+
'child/increment': Database.ServerValue.increment(1),
114114
'literal': 5
115115
});
116116
expect(value).to.deep.equal({
@@ -121,7 +121,7 @@ describe('ServerValue tests', () => {
121121
});
122122

123123
await node.update({
124-
'child/increment': Database.ServerValue._increment(41)
124+
'child/increment': Database.ServerValue.increment(41)
125125
});
126126
expect(value).to.deep.equal({
127127
'literal': 5,
@@ -141,7 +141,7 @@ describe('ServerValue tests', () => {
141141
const racers = 100;
142142

143143
for (let i = 0; i < racers; i++) {
144-
all.push(node.set(Database.ServerValue._increment(1)));
144+
all.push(node.set(Database.ServerValue.increment(1)));
145145
}
146146
await Promise.all(all);
147147

packages/firebase/index.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6920,6 +6920,15 @@ declare namespace firebase.database.ServerValue {
69206920
* ```
69216921
*/
69226922
var TIMESTAMP: Object;
6923+
6924+
/**
6925+
* Returns a placeholder value that can be used to atomically increment the
6926+
* current database value by the provided delta.
6927+
*
6928+
* @param delta the amount to modify the current value atomically.
6929+
* @return a placeholder value for modifying data atomically server-side.
6930+
*/
6931+
function increment(delta: number) : Object;
69236932
}
69246933

69256934
/**

0 commit comments

Comments
 (0)