From ae11e1e204207e4b3e8b6f3f54bedb0b0463cf2d Mon Sep 17 00:00:00 2001 From: Johannes Millan Date: Sun, 19 May 2019 18:09:42 +0200 Subject: [PATCH] chore(schema): add upsert --- .../src/jo/files/__name@dasherize__.service.ts | 12 +++++++++++- .../src/jo/files/store/__name@dasherize__.actions.ts | 9 +++++++++ .../src/jo/files/store/__name@dasherize__.reducer.ts | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/tools/schematics/src/jo/files/__name@dasherize__.service.ts b/tools/schematics/src/jo/files/__name@dasherize__.service.ts index 2c3ec4bf33..8324a91269 100644 --- a/tools/schematics/src/jo/files/__name@dasherize__.service.ts +++ b/tools/schematics/src/jo/files/__name@dasherize__.service.ts @@ -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})); + } } diff --git a/tools/schematics/src/jo/files/store/__name@dasherize__.actions.ts b/tools/schematics/src/jo/files/store/__name@dasherize__.actions.ts index 3062167713..bb59784ef5 100644 --- a/tools/schematics/src/jo/files/store/__name@dasherize__.actions.ts +++ b/tools/schematics/src/jo/files/store/__name@dasherize__.actions.ts @@ -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)%> ; diff --git a/tools/schematics/src/jo/files/store/__name@dasherize__.reducer.ts b/tools/schematics/src/jo/files/store/__name@dasherize__.reducer.ts index e4154ec49d..a80843b5a5 100644 --- a/tools/schematics/src/jo/files/store/__name@dasherize__.reducer.ts +++ b/tools/schematics/src/jo/files/store/__name@dasherize__.reducer.ts @@ -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); }