chore: update schematics with new shorter style

This commit is contained in:
Johannes Millan 2019-07-26 20:21:44 +02:00
parent b72e2e2879
commit ad7c6a5d7d
5 changed files with 103 additions and 133 deletions

View file

@ -141,9 +141,9 @@
"@angular/router": "^8.1.0",
"@angular/service-worker": "^8.1.0",
"@biesbjerg/ngx-translate-extract": "^2.3.4",
"@ngrx/data": "^8.1.0",
"@ngrx/effects": "^8.1.0",
"@ngrx/entity": "^8.1.0",
"@ngrx/data": "^8.1.0",
"@ngrx/schematics": "^8.1.0",
"@ngrx/store": "8.1.0",
"@ngrx/store-devtools": "^8.1.0",

View file

@ -7,12 +7,12 @@ import {
select<%= classify(name)%>ById,
} from './store/<%= dasherize(name)%>.reducer';
import {
Add<%= classify(name)%>,
Delete<%= classify(name)%>,
Delete<%= classify(name)%>s,
Load<%= classify(name)%>State,
Update<%= classify(name)%>,
Upsert<%= classify(name)%>,
add<%= classify(name)%>,
delete<%= classify(name)%>,
delete<%= classify(name)%>s,
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';
@ -40,11 +40,11 @@ export class <%= classify(name)%>Service {
}
loadState(state: <%= classify(name)%>State) {
this._store$.dispatch(new Load<%= classify(name)%>State({state}));
this._store$.dispatch(load<%= classify(name)%>State({state}));
}
add<%= classify(name)%>(<%= camelize(name)%>: <%= classify(name)%>) {
this._store$.dispatch(new Add<%= classify(name)%>({
this._store$.dispatch(add<%= classify(name)%>({
<%= camelize(name)%>: {
...<%= camelize(name)%>,
id: shortid()
@ -53,18 +53,18 @@ export class <%= classify(name)%>Service {
}
delete<%= classify(name)%>(id: string) {
this._store$.dispatch(new Delete<%= classify(name)%>({id}));
this._store$.dispatch(delete<%= classify(name)%>({id}));
}
delete<%= classify(name)%>s(ids: string[]) {
this._store$.dispatch(new Delete<%= classify(name)%>s({ids}));
this._store$.dispatch(delete<%= classify(name)%>s({ids}));
}
update<%= classify(name)%>(id: string, changes: Partial<<%= classify(name)%>>) {
this._store$.dispatch(new Update<%= classify(name)%>({<%= camelize(name)%>: {id, changes}}));
this._store$.dispatch(update<%= classify(name)%>({<%= camelize(name)%>: {id, changes}}));
}
upsert<%= classify(name)%>(<%= camelize(name)%>: <%= classify(name)%>) {
this._store$.dispatch(new Upsert<%= classify(name)%>({<%= camelize(name)%>}));
this._store$.dispatch(upsert<%= classify(name)%>({<%= camelize(name)%>}));
}
}

View file

@ -1,64 +1,33 @@
import {Action} from '@ngrx/store';
import {createAction, props} from '@ngrx/store';
import {Update} from '@ngrx/entity';
import {<%= classify(name)%>, <%= classify(name)%>State} from '../<%= dasherize(name)%>.model';
import {<%= classify(name)%>, <%= classify(name)%>State } from '../<%= dasherize(name)%>.model';
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)%>',
Delete<%= classify(name)%>s = '[<%= classify(name)%>] Delete multiple <%= classify(name)%>s',
}
export const load<%= classify(name)%>State = createAction(
'[<%= classify(name)%>] Load <%= classify(name)%> State',
props<{ state: <%= classify(name)%>State }>(),
);
export class Load<%= classify(name)%>State implements Action {
readonly type = <%= classify(name)%>ActionTypes.Load<%= classify(name)%>State;
export const add<%= classify(name)%> = createAction(
'[<%= classify(name)%>] Add <%= classify(name)%>',
props<{ <%= camelize(name)%>: <%= classify(name)%> }>(),
);
constructor(public payload: { state: <%= classify(name)%>State }) {
}
}
export const update<%= classify(name)%> = createAction(
'[<%= classify(name)%>] Update <%= classify(name)%>',
props<{ <%= camelize(name)%>: Update<<%= classify(name)%>> }>(),
);
export class Add<%= classify(name)%> implements Action {
readonly type = <%= classify(name)%>ActionTypes.Add<%= classify(name)%>;
export const upsert<%= classify(name)%> = createAction(
'[<%= classify(name)%>] Upsert <%= classify(name)%>',
props<{ <%= camelize(name)%>: <%= classify(name)%> }>(),
);
constructor(public payload: { <%= camelize(name)%>: <%= classify(name)%> }) {
}
}
export const delete<%= classify(name)%> = createAction(
'[<%= classify(name)%>] Delete <%= classify(name)%>',
props<{ id: string }>(),
);
export class Update<%= classify(name)%> implements Action {
readonly type = <%= classify(name)%>ActionTypes.Update<%= classify(name)%>;
constructor(public payload: { <%= camelize(name)%>: Update<<%= classify(name)%>> }) {
}
}
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)%>;
constructor(public payload: { id: string }) {
}
}
export class Delete<%= classify(name)%>s implements Action {
readonly type = <%= classify(name)%>ActionTypes.Delete<%= classify(name)%>s;
constructor(public payload: { ids: string[] }) {
}
}
export type <%= classify(name)%>Actions =
Load<%= classify(name)%>State
| Add<%= classify(name)%>
| Update<%= classify(name)%>
| Upsert<%= classify(name)%>
| Delete<%= classify(name)%>
| Delete<%= classify(name)%>s
;
export const delete<%= classify(name)%>s = createAction(
'[<%= classify(name)%>] Delete multiple <%= classify(name)%>s',
props<{ ids: string[] }>(),
);

View file

@ -1,43 +1,52 @@
import {Injectable} from '@angular/core';
import {Actions, Effect, ofType} from '@ngrx/effects';
import {Actions, createEffect, ofType} from '@ngrx/effects';
import {tap, withLatestFrom} from 'rxjs/operators';
import {select, Store} from '@ngrx/store';
import {<%= classify(name)%>ActionTypes} from './<%= dasherize(name)%>.actions';
import {Injectable} from '@angular/core';
import {Actions, createEffect, ofType} from '@ngrx/effects';
import {tap, withLatestFrom} from 'rxjs/operators';
import {select, Store} from '@ngrx/store';
import * as <%= camelize(name)%>Actions from './<%= dasherize(name)%>.actions';
import {select<%= classify(name)%>FeatureState} from './<%= dasherize(name)%>.reducer';
@Injectable()
export class <%= classify(name)%>Effects {
@Effect({dispatch: false}) update<%= classify(name)%>s$: any = this._actions$
.pipe(
ofType(
<%= classify(name)%>ActionTypes.Add<%= classify(name)%>,
<%= classify(name)%>ActionTypes.Update<%= classify(name)%>,
<%= classify(name)%>ActionTypes.Upsert<%= classify(name)%>,
<%= classify(name)%>ActionTypes.Delete<%= classify(name)%>,
<%= classify(name)%>ActionTypes.Delete<%= classify(name)%>s,
),
withLatestFrom(
this._store$.pipe(select(selectCurrentProjectId)),
this._store$.pipe(select(select<%= classify(name)%>FeatureState)),
),
tap(this._saveToLs.bind(this))
);
update<%= classify(name)%>sStorage$ = createEffect(() => this._actions$.pipe(
ofType(
<%= camelize(name)%>Actions.add<%= classify(name)%>,
<%= camelize(name)%>Actions.update<%= classify(name)%>,
<%= camelize(name)%>Actions.upsert<%= classify(name)%>,
<%= camelize(name)%>Actions.delete<%= classify(name)%>,
<%= camelize(name)%>Actions.delete<%= classify(name)%>s,
),
withLatestFrom(
this._store$.pipe(select(selectCurrentProjectId)),
this._store$.pipe(select(select<%= classify(name)%>FeatureState)),
),
tap(this._saveToLs.bind(this)),
tap(this._updateLastActive.bind(this)),
), {dispatch: false});
constructor(
private _actions$: Actions,
private _store$: Store<any>,
private _persistenceService: PersistenceService
) {
}
private _saveToLs([action, currentProjectId, <%= camelize(name)%>State]) {
if (currentProjectId) {
this._persistenceService.saveLastActive();
this._persistenceService.<%= camelize(name)%>.save(currentProjectId, <%= camelize(name)%>State);
} else {
throw new Error('No current project id');
}
constructor(
private _actions$: Actions,
private _store$: Store<any>,
private _persistenceService: PersistenceService,
) {
}
private _saveToLs([action, currentProjectId, <%= camelize(name)%>State]) {
if (currentProjectId) {
this._persistenceService.saveLastActive();
this._persistenceService.<%= camelize(name)%>.save(currentProjectId, <%= camelize(name)%>State);
} else {
throw new Error('No current project id');
}
}
private _updateLastActive() {
this._persistenceService.saveLastActive();
}
}

View file

@ -1,7 +1,7 @@
import { createEntityAdapter, EntityAdapter, EntityState } from '@ngrx/entity';
import { <%= classify(name)%>Actions, <%= classify(name)%>ActionTypes } from './<%= dasherize(name) %>.actions';
import { createEntityAdapter, EntityAdapter } from '@ngrx/entity';
import * as <%= camelize(name)%>Actions from './<%= dasherize(name) %>.actions';
import { <%= classify(name)%>, <%= classify(name)%>State } from '../<%= dasherize(name) %>.model';
import { createFeatureSelector, createSelector } from '@ngrx/store';
import { Action, createReducer, createFeatureSelector, createSelector, on } from '@ngrx/store';
export const <%= underscore(name).toUpperCase()%>_FEATURE_NAME = '<%= camelize(name) %>';
@ -20,38 +20,30 @@ export const initial<%= classify(name)%>State: <%= classify(name)%>State = adapt
// additional entity state properties
});
const _reducer = createReducer<<%= classify(name)%>State>(
initial<%= classify(name)%>State,
on(<%= camelize(name)%>Actions.add<%= classify(name)%>, (state, {<%= camelize(name) %>}) => adapter.addOne(<%= camelize(name) %>, state)),
on(<%= camelize(name)%>Actions.update<%= classify(name)%>, (state, {<%= camelize(name) %>}) => adapter.updateOne(<%= camelize(name) %>, state)),
on(<%= camelize(name)%>Actions.upsert<%= classify(name)%>, (state, {<%= camelize(name) %>}) => adapter.upsertOne(<%= camelize(name) %>, state)),
on(<%= camelize(name)%>Actions.delete<%= classify(name)%>, (state, {id}) => adapter.removeOne(id, state)),
on(<%= camelize(name)%>Actions.delete<%= classify(name)%>s, (state, {ids}) => adapter.removeMany(ids, state)),
on(<%= camelize(name)%>Actions.load<%= classify(name)%>State, (oldState, {state}) => ({...oldState, ...state})),
);
export function <%= camelize(name) %>Reducer(
state = initial<%= classify(name)%>State,
action: <%= classify(name)%>Actions
action: Action,
): <%= classify(name)%>State {
switch (action.type) {
case <%= classify(name)%>ActionTypes.Add<%= classify(name)%>: {
return adapter.addOne(action.payload.<%= camelize(name) %>, state);
}
case <%= classify(name)%>ActionTypes.Update<%= classify(name)%>: {
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);
}
case <%= classify(name)%>ActionTypes.Delete<%= classify(name)%>s: {
return adapter.removeMany(action.payload.ids, state);
}
case <%= classify(name)%>ActionTypes.Load<%= classify(name)%>State:
return {...action.payload.state};
default: {
return state;
}
}
return _reducer(state, action);
}