chore(schema): add upsert

This commit is contained in:
Johannes Millan 2019-05-19 18:09:42 +02:00
parent 1825f8bd9b
commit ae11e1e204
3 changed files with 24 additions and 1 deletions

View file

@ -6,7 +6,13 @@ import {
selectAll<%= classify(name)%>s,
select<%= classify(name)%>ById,
} from './store/<%= camelize(name)%>.reducer';
import {Add<%= classify(name)%>, Delete<%= classify(name)%>, Load<%= classify(name)%>State, Update<%= classify(name)%>} from './store/<%= dasherize(name)%>.actions';
import {
Add<%= classify(name)%>,
Delete<%= classify(name)%>,
Load<%= classify(name)%>State,
Update<%= classify(name)%>,
Upsert<%= classify(name)%>,
} from './store/<%= dasherize(name)%>.actions';
import {Observable} from 'rxjs';
import {<%= classify(name)%>, <%= classify(name)%>State} from './<%= dasherize(name)%>.model';
import shortid from 'shortid';
@ -52,4 +58,8 @@ export class <%= classify(name)%>Service {
update<%= classify(name)%>(id: string, changes: Partial<<%= classify(name)%>>) {
this._store$.dispatch(new Update<%= classify(name)%>({<%= camelize(name)%>: {id, changes}}));
}
upsert<%= classify(name)%>(metric: <%= classify(name)%>) {
this._store$.dispatch(new Upsert<%= classify(name)%>({metric}));
}
}

View file

@ -6,6 +6,7 @@ export enum <%= classify(name)%>ActionTypes {
Load<%= classify(name)%>State = '[<%= classify(name)%>] Load <%= classify(name)%> State',
Add<%= classify(name)%> = '[<%= classify(name)%>] Add <%= classify(name)%>',
Update<%= classify(name)%> = '[<%= classify(name)%>] Update <%= classify(name)%>',
Upsert<%= classify(name)%> = '[<%= classify(name)%>] Upsert <%= classify(name)%>',
Delete<%= classify(name)%> = '[<%= classify(name)%>] Delete <%= classify(name)%>',
}
@ -30,6 +31,13 @@ export class Update<%= classify(name)%> implements Action {
}
}
export class Upsert<%= classify(name)%> implements Action {
readonly type = <%= classify(name)%>ActionTypes.Upsert<%= classify(name)%>;
constructor(public payload: { <%= camelize(name)%>: <%= classify(name)%> }) {
}
}
export class Delete<%= classify(name)%> implements Action {
readonly type = <%= classify(name)%>ActionTypes.Delete<%= classify(name)%>;
@ -42,5 +50,6 @@ export type <%= classify(name)%>Actions =
Load<%= classify(name)%>State
| Add<%= classify(name)%>
| Update<%= classify(name)%>
| Upsert<%= classify(name)%>
| Delete<%= classify(name)%>
;

View file

@ -33,6 +33,10 @@ export function <%= camelize(name) %>Reducer(
return adapter.updateOne(action.payload.<%= camelize(name) %>, state);
}
case <%= classify(name)%>ActionTypes.Upsert<%= classify(name)%>: {
return adapter.upsertOne(action.payload.<%= camelize(name) %>, state);
}
case <%= classify(name)%>ActionTypes.Delete<%= classify(name)%>: {
return adapter.removeOne(action.payload.id, state);
}