Data source immutable output

Immutable - Immutable.js provides many Persistent Immutable data structures including: List, Stack, Map, OrderedMap, Set, OrderedSet and Record.

Make each methods response immutable:

class UserDataSource extends DataSource {
  static steps = ['api', 'immutable'];

  static immutable = response => Immutable.fromJSON(response);

  static api = {
    list: api('GET /users'),
  };

  loadAll(params) {
    return this.invoke('list', params);
  }
}

Use Immutable Records and Maps:

import { Record, Map } from 'immutable';

const User = Record({
  id: null,
  name: '',
});

class UserDataSource extends DataSource {
  static steps = ['validate', 'api', 'model'];

  static api = {
    update: api('PUT /users/:id'),
    loadAll: api('GET /users'),
  };

  static model = {
    update: response => new User(response),

    loadAll: response => {
      return response.reduce((map, user) => {
        map.set({
          [user.id]: user,
        });

        return map;
      }, Map());
    },
  };

  update(user) {
    return this.invoke('update', user);
  }
}

results matching ""

    No results matching ""