1.0.4 • Published 8 years ago
erschema-selectors v1.0.4
erschema-selectors
A class of selectors for use with the erschema-redux-immutable library
Usage
import Selector from 'erschema-selectors'
import erschema from 'erschema-redux-immutable'
import { createStore, combineReducers } from 'redux';
import { Record } from 'immutable'
import schema from './schema'
import reducers from './reducer'
const store = createStore(combineReducer({
...reducers,
erschema({
schema,
})
}))
class UserModel extends Record({
name: '',
id: '',
}){}
const defaultUserModel = new UserModel()
const userSelectors(
((state)=>state.erschema) | 'erschema',
'users',
defaultUserModel
)
const mapStateToProps = (state, props)=>{
return {
user: userSelectors.find((props)=>props.id)(state, props)
}
}Properties
type $idSelector = (state: Object, props: Object)=>any
const defaultIdSelector = (s, p)=>p.id
type $idsSelector = (state: Object, props: Object)=>any[]findEntityData
userSelectors.findEntityData()
===>
returns all of the models for users entity type in an immutable Mapfind
userSelectors.find(idSelector?: $idSelector = defaultIdSelector)
===>
returns the user model if it exists, or the default user modelget
userSelectors.find(idSelectors: $idsSelector)
===>
returns the ids iterator type mapped with the user models if they exists, or the default user modelget
userSelectors.find(idSelectors: $idsSelector)
===>
returns the ids iterator type mapped with the user models if they exists, or the default user modelfindManyRelationshipData
userSelectors.findManyRelationshipData(relationshipName)
===>
returns the entire immutable Map of relationship values
ie. userSelectors.findManyRelationshipData('friends')
===>
Immutable.Map({
[id]: Immutable.OrderedSet([...ids])
})findMonoRelationshipData
userSelectors.findMonoRelationshipData(relationshipName)
===>
returns the entire immutable Map of relationship values
ie. userSelectors.findManyRelationshipData('friends')
===>
Immutable.Map({
[id]: id
})getRawRelatedIds
userSelectors.getRawRelatedIds(relationshipName, idSelector?: $$idSelector = defaultIdSelector)
===>
returns the relationship for a specific id as an Immutable OrderedSet if it exists, or a empty OrderedSet if no relationship for that id existsgetRelatedIds
Same as getRawRelatedIds except returns an Immutable List instead of an OrderedSet, which is easier to work withfindRelatedId
userSelectors.findRelatedId(relationshipName, idSelector?: $$idSelector = defaultIdSelector)
===>
returns the related id for a specific ids relationship if it exists, or a 0 if it does not exist