Skip to content

Commit 230d113

Browse files
committed
Rename trackOld
1 parent 32b2413 commit 230d113

File tree

5 files changed

+29
-29
lines changed

5 files changed

+29
-29
lines changed

.changeset/giant-ladybugs-dress.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
'@powersync/common': minor
33
---
44

5-
- Add `trackOld` option on `Table` which sets `CrudEntry.oldData` to previous values on updates.
5+
- Add `trackPreviousValues` option on `Table` which sets `CrudEntry.previousValues` to previous values on updates.
66
- Add `trackMetadata` option on `Table` which adds a `_metadata` column that can be used for updates.
77
The configured metadata is available through `CrudEntry.metadata`.
88
- Add `ignoreEmptyUpdates` option which skips creating CRUD entries for updates that don't change any values.

packages/common/src/client/sync/bucket/CrudEntry.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ export class CrudEntry {
6666
opData?: Record<string, any>;
6767

6868
/**
69-
* For tables where the `trackOld` option has been enabled, this tracks previous values for
69+
* For tables where the `trackPreviousValues` option has been enabled, this tracks previous values for
7070
* `UPDATE` and `DELETE` statements.
7171
*/
72-
oldData?: Record<string, any>;
72+
previousValues?: Record<string, any>;
7373

7474
/**
7575
* Table that contained the change.
@@ -109,7 +109,7 @@ export class CrudEntry {
109109
id: string,
110110
transactionId?: number,
111111
opData?: Record<string, any>,
112-
oldData?: Record<string, any>,
112+
previousValues?: Record<string, any>,
113113
metadata?: string
114114
) {
115115
this.clientId = clientId;
@@ -118,7 +118,7 @@ export class CrudEntry {
118118
this.opData = opData;
119119
this.table = table;
120120
this.transactionId = transactionId;
121-
this.oldData = oldData;
121+
this.previousValues = previousValues;
122122
this.metadata = metadata;
123123
}
124124

packages/common/src/db/schema/Table.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ interface SharedTableOptions {
1414
localOnly?: boolean;
1515
insertOnly?: boolean;
1616
viewName?: string;
17-
trackOld?: boolean | TrackOldOptions;
17+
trackPrevious?: boolean | TrackPreviousOptions;
1818
trackMetadata?: boolean;
1919
ignoreEmptyUpdates?: boolean;
2020
}
2121

22-
/** Whether to include old columns when PowerSync tracks local changes.
22+
/** Whether to include previous column values when PowerSync tracks local changes.
2323
*
24-
* Including old columns may be helpful for some backend connector implementations, which is
24+
* Including old values may be helpful for some backend connector implementations, which is
2525
* why it can be enabled on per-table or per-columm basis.
2626
*/
27-
export interface TrackOldOptions {
27+
export interface TrackPreviousOptions {
2828
/** When defined, a list of column names for which old values should be tracked. */
2929
columns?: string[];
3030
/** When enabled, only include values that have actually been changed by an update. */
@@ -56,7 +56,7 @@ export const DEFAULT_TABLE_OPTIONS = {
5656
indexes: [],
5757
insertOnly: false,
5858
localOnly: false,
59-
trackOld: false,
59+
trackPrevious: false,
6060
trackMetadata: false,
6161
ignoreEmptyUpdates: false
6262
};
@@ -200,7 +200,7 @@ export class Table<Columns extends ColumnsType = ColumnsType> {
200200
viewName: options?.viewName,
201201
insertOnly: options?.insertOnly,
202202
localOnly: options?.localOnly,
203-
trackOld: options?.trackOld,
203+
trackPrevious: options?.trackPrevious,
204204
trackMetadata: options?.trackMetadata,
205205
ignoreEmptyUpdates: options?.ignoreEmptyUpdates
206206
};
@@ -212,7 +212,7 @@ export class Table<Columns extends ColumnsType = ColumnsType> {
212212
private applyDefaultOptions() {
213213
this.options.insertOnly ??= DEFAULT_TABLE_OPTIONS.insertOnly;
214214
this.options.localOnly ??= DEFAULT_TABLE_OPTIONS.localOnly;
215-
this.options.trackOld ??= DEFAULT_TABLE_OPTIONS.trackOld;
215+
this.options.trackPrevious ??= DEFAULT_TABLE_OPTIONS.trackPrevious;
216216
this.options.trackMetadata ??= DEFAULT_TABLE_OPTIONS.trackMetadata;
217217
this.options.ignoreEmptyUpdates ??= DEFAULT_TABLE_OPTIONS.ignoreEmptyUpdates;
218218
}
@@ -255,8 +255,8 @@ export class Table<Columns extends ColumnsType = ColumnsType> {
255255
return this.options.insertOnly!;
256256
}
257257

258-
get trackOld() {
259-
return this.options.trackOld!;
258+
get trackPrevious() {
259+
return this.options.trackPrevious!;
260260
}
261261

262262
get trackMetadata() {
@@ -301,7 +301,7 @@ export class Table<Columns extends ColumnsType = ColumnsType> {
301301
if (this.trackMetadata && this.localOnly) {
302302
throw new Error(`Can't include metadata for local-only tables.`);
303303
}
304-
if (this.trackOld != false && this.localOnly) {
304+
if (this.trackPrevious != false && this.localOnly) {
305305
throw new Error(`Can't include old values for local-only tables.`);
306306
}
307307

@@ -341,15 +341,15 @@ export class Table<Columns extends ColumnsType = ColumnsType> {
341341
}
342342

343343
toJSON() {
344-
const trackOld = this.trackOld;
344+
const trackPrevious = this.trackPrevious;
345345

346346
return {
347347
name: this.name,
348348
view_name: this.viewName,
349349
local_only: this.localOnly,
350350
insert_only: this.insertOnly,
351-
include_old: trackOld && ((trackOld as any).columns ?? true),
352-
include_old_only_when_changed: typeof trackOld == 'object' && trackOld.onlyWhenChanged == true,
351+
include_old: trackPrevious && ((trackPrevious as any).columns ?? true),
352+
include_old_only_when_changed: typeof trackPrevious == 'object' && trackPrevious.onlyWhenChanged == true,
353353
include_metadata: this.trackMetadata,
354354
ignore_empty_update: this.ignoreEmptyUpdates,
355355
columns: this.columns.map((c) => c.toJSON()),

packages/common/tests/db/schema/Table.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,10 @@ describe('Table', () => {
138138
expect(createTable({}).toJSON().include_metadata).toBe(false);
139139
expect(createTable({ trackMetadata: true }).toJSON().include_metadata).toBe(true);
140140

141-
expect(createTable({ trackOld: true }).toJSON().include_old).toBe(true);
142-
expect(createTable({ trackOld: true }).toJSON().include_old_only_when_changed).toBe(false);
141+
expect(createTable({ trackPrevious: true }).toJSON().include_old).toBe(true);
142+
expect(createTable({ trackPrevious: true }).toJSON().include_old_only_when_changed).toBe(false);
143143

144-
const complexIncldueOld = createTable({ trackOld: {
144+
const complexIncldueOld = createTable({ trackPrevious: {
145145
columns: ['foo', 'bar'],
146146
onlyWhenChanged: true,
147147
} });
@@ -216,7 +216,7 @@ describe('Table', () => {
216216
{
217217
name: column.text
218218
},
219-
{ localOnly: true, trackOld: true }
219+
{ localOnly: true, trackPrevious: true }
220220
).validate()
221221
).toThrowError("Can't include old values for local-only tables.");
222222

@@ -225,7 +225,7 @@ describe('Table', () => {
225225
{
226226
name: column.text
227227
},
228-
{ localOnly: true, trackOld: { onlyWhenChanged: false } }
228+
{ localOnly: true, trackPrevious: { onlyWhenChanged: false } }
229229
).validate()
230230
).toThrowError("Can't include old values for local-only tables.");
231231
});

packages/node/tests/crud.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ databaseTest('include old values', async ({ database }) => {
2626
{
2727
name: column.text
2828
},
29-
{ trackOld: true }
29+
{ trackPrevious: true }
3030
)
3131
});
3232
await database.updateSchema(schema);
@@ -35,7 +35,7 @@ databaseTest('include old values', async ({ database }) => {
3535
await database.execute('UPDATE lists SET name = ?', ['new name']);
3636

3737
const batch = await database.getNextCrudTransaction();
38-
expect(batch?.crud[0].oldData).toStrictEqual({name: 'entry'});
38+
expect(batch?.crud[0].previousValues).toStrictEqual({name: 'entry'});
3939
});
4040

4141
databaseTest('include old values with column filter', async ({ database }) => {
@@ -46,7 +46,7 @@ databaseTest('include old values with column filter', async ({ database }) => {
4646
name: column.text,
4747
content: column.text
4848
},
49-
{ trackOld: { columns: ['name'] } }
49+
{ trackPrevious: { columns: ['name'] } }
5050
)
5151
});
5252
await database.updateSchema(schema);
@@ -55,7 +55,7 @@ databaseTest('include old values with column filter', async ({ database }) => {
5555
await database.execute('UPDATE lists SET name = ?, content = ?', ['new name', 'new content']);
5656

5757
const batch = await database.getNextCrudTransaction();
58-
expect(batch?.crud[0].oldData).toStrictEqual({name: 'name'});
58+
expect(batch?.crud[0].previousValues).toStrictEqual({name: 'name'});
5959
});
6060

6161
databaseTest('include old values when changed', async ({ database }) => {
@@ -66,7 +66,7 @@ databaseTest('include old values when changed', async ({ database }) => {
6666
name: column.text,
6767
content: column.text
6868
},
69-
{ trackOld: { onlyWhenChanged: true } }
69+
{ trackPrevious: { onlyWhenChanged: true } }
7070
)
7171
});
7272
await database.updateSchema(schema);
@@ -75,7 +75,7 @@ databaseTest('include old values when changed', async ({ database }) => {
7575
await database.execute('UPDATE lists SET name = ?', ['new name']);
7676

7777
const batch = await database.getNextCrudTransaction();
78-
expect(batch?.crud[0].oldData).toStrictEqual({name: 'name'});
78+
expect(batch?.crud[0].previousValues).toStrictEqual({name: 'name'});
7979
});
8080

8181
databaseTest('ignore empty update', async ({ database }) => {

0 commit comments

Comments
 (0)