Browse Source

refactor: change to onRecordSetValue

pull/6018/head
danstarns 1 year 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.
### 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.
@ -165,7 +165,7 @@ const testDataSource = {
id: 'test-data-source',
records: [],
transformers: {
onRecordSet: ({ id, key, value }) => {
onRecordSetValue: ({ id, key, value }) => {
if (key !== 'content') {
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,
): this;
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 newValue =
options?.avoidTransformers || !onRecordSet
options?.avoidTransformers || !onRecordSetValue
? val
: onRecordSet({
: onRecordSetValue({
id: this.id,
key,
value: val,

2
src/data_sources/types.ts

@ -34,7 +34,7 @@ export interface DataSourceProps {
export interface DataSourceTransformers {
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;
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');
});
test('onRecordSet', () => {
test('onRecordSetValue', () => {
const testDataSource: DataSourceProps = {
id: 'test-data-source',
records: [],
transformers: {
onRecordSet: ({ id, key, value }) => {
onRecordSetValue: ({ id, key, value }) => {
if (key !== 'content') {
return value;
}

Loading…
Cancel
Save