Browse Source

refactor: change to onRecordSetValue

feature/data-sources
danstarns 2 years ago
parent
commit
f4cb3339b7
  1. 4
      docs/modules/DataSources.md
  2. 6
      src/data_sources/model/DataRecord.ts
  3. 2
      src/data_sources/types.ts
  4. 4
      test/specs/data_sources/transformers.ts

4
docs/modules/DataSources.md

@ -154,7 +154,7 @@ const testDataSource = {
In this example, every record added will have its `content` field converted to uppercase. In this example, every record added will have its `content` field converted to uppercase.
### 2. `onRecordSet` ### 2. `onRecordSetValue`
This transformer is invoked when a record's property is updated. It provides an opportunity to validate or transform the new value. This transformer is invoked when a record's property is updated. It provides an opportunity to validate or transform the new value.
@ -165,7 +165,7 @@ const testDataSource = {
id: 'test-data-source', id: 'test-data-source',
records: [], records: [],
transformers: { transformers: {
onRecordSet: ({ id, key, value }) => { onRecordSetValue: ({ id, key, value }) => {
if (key !== 'content') { if (key !== 'content') {
return value; return value;
} }

6
src/data_sources/model/DataRecord.ts

@ -137,13 +137,13 @@ export default class DataRecord<T extends DataRecordProps = DataRecordProps> ext
options?: SetOptions | undefined, options?: SetOptions | undefined,
): this; ): this;
set(attributeName: unknown, value?: unknown, options?: SetOptions): DataRecord { set(attributeName: unknown, value?: unknown, options?: SetOptions): DataRecord {
const onRecordSet = this.dataSource?.transformers?.onRecordSet; const onRecordSetValue = this.dataSource?.transformers?.onRecordSetValue;
const applySet = (key: string, val: unknown) => { const applySet = (key: string, val: unknown) => {
const newValue = const newValue =
options?.avoidTransformers || !onRecordSet options?.avoidTransformers || !onRecordSetValue
? val ? val
: onRecordSet({ : onRecordSetValue({
id: this.id, id: this.id,
key, key,
value: val, value: val,

2
src/data_sources/types.ts

@ -34,7 +34,7 @@ export interface DataSourceProps {
export interface DataSourceTransformers { export interface DataSourceTransformers {
onRecordAdd?: (args: { record: DataRecordProps }) => DataRecordProps; onRecordAdd?: (args: { record: DataRecordProps }) => DataRecordProps;
onRecordSet?: (args: { id: string | number; key: string; value: any }) => any; onRecordSetValue?: (args: { id: string | number; key: string; value: any }) => any;
onRecordDelete?: (args: { record: DataRecord }) => void; onRecordDelete?: (args: { record: DataRecord }) => void;
onRecordRead?: (args: { record: DataRecord }) => DataRecord; onRecordRead?: (args: { record: DataRecord }) => DataRecord;
} }

4
test/specs/data_sources/transformers.ts

@ -69,12 +69,12 @@ describe('DataSource Transformers', () => {
expect(result).toBe('I LOVE GRAPES'); expect(result).toBe('I LOVE GRAPES');
}); });
test('onRecordSet', () => { test('onRecordSetValue', () => {
const testDataSource: DataSourceProps = { const testDataSource: DataSourceProps = {
id: 'test-data-source', id: 'test-data-source',
records: [], records: [],
transformers: { transformers: {
onRecordSet: ({ id, key, value }) => { onRecordSetValue: ({ id, key, value }) => {
if (key !== 'content') { if (key !== 'content') {
return value; return value;
} }

Loading…
Cancel
Save