Skip to content

alexandre-garrec/data-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

data-adapter-js

You can use it to adapting data in according to a schema for Flux and Redux apps.

travis npm david-dm

Install

$ npm install data-adapter-js --save-dev

Require

import Adapter, { ArrayOf, InstanceOf, Model } from "data-adapter-js"

Run

$ npm start
$ npm test
$ npm run build
$ npm run lint

API

ArrayOf Parameters:

  1. Model
  2. array of data

InstanceOf Parameters:

  1. Model
  2. object

Model Parameters:

  1. pluralize name
  2. adapter function ( current, parrent )
  3. name of uniq id key

Demo

import Adapter, { ArrayOf, InstanceOf, Model } from "data-adapter-js"
import data from './data'

const User = new Model('users' , (user) => ({
	id: user.id,
	username: user.name,
	comments : new ArrayOf(Comment, user.comments)
}))


const Comment = new Model('comments', (comment, user) => ({
	id: comment.id,
	userId: user.id,
	text: comment.content
}))

const Post = new Model('posts', (post) => ({
	id: post.id,
	user: new InstanceOf(User, post.author),
	text: post.content
}))

Adapter(data, User)

Data

before

[
	{
		id: 1,
		name: 'toto',
		comments : [
			{
				id: 31,
				postId: 1,
				content : 'lorem ipsum elms'
			},
			{
				id: 39,
				postId: 1,
				content : 'dare ipsum remu'
			},
		]
	},
	{
		id: 2,
		name: 'tata',
		comments : [ 
			{
				id: 34,
				postId: 4,
				content : 'lorem ipsum elms'
			},
			{
				id: 32,
				postId: 15,
				content : 'dare ipsum remu'
			},
		]
	}
]

After

{ 
	users: {
		1: {
			id: 1,
			username: 'toto',
			comments : [31, 39] 
		},
		2: {
			id: 2,
			username: 'tata',
			comments : [34, 32] 
		} 
	},
	comments: {
		31: { 
			id: 31,
			userId: 1,
			text: 'lorem ipsum elms' 
		},
		39: { 
			id: 39,
			userId: 1,
			text: 'dare ipsum remu' 
		},
		34: { 
			id: 34,
			serId: 2,
			text: 'lorem ipsum elms' 
		},
		32: { 
			id: 32,
			userId: 2,
			text: 'dare ipsum remu' 
		}
	}
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published