https://github.com/l2silver/erschema-selectors
https://github.com/l2silver/erschema-selectors
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/l2silver/erschema-selectors
- Owner: l2silver
- Created: 2017-03-12T21:39:34.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-11-15T05:21:50.000Z (over 8 years ago)
- Last Synced: 2025-05-21T19:53:42.032Z (about 1 year ago)
- Language: JavaScript
- Size: 19.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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 Map
```
### find
```
userSelectors.find(idSelector?: $idSelector = defaultIdSelector)
===>
returns the user model if it exists, or the default user model
```
### get
```
userSelectors.find(idSelectors: $idsSelector)
===>
returns the ids iterator type mapped with the user models if they exists, or the default user model
```
### get
```
userSelectors.find(idSelectors: $idsSelector)
===>
returns the ids iterator type mapped with the user models if they exists, or the default user model
```
### findManyRelationshipData
```
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 exists
```
### getRelatedIds
```
Same as getRawRelatedIds except returns an Immutable List instead of an OrderedSet, which is easier to work with
```
### findRelatedId
```
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
```