generator-zionapps
Version:
Angular 9 Code Generator
53 lines (43 loc) • 2.63 kB
text/typescript
import {Dictionary} from '@ngrx/entity/src/models';
/**
* <%= pascalCase(singularDomainName) %> Selectors
*/
import {createFeatureSelector, createSelector, MemoizedSelector} from '@ngrx/store';
import {getPropertyValue, isItemDefined} from '@zionapps/core';
import {<%= pascalCase(singularDomainName) %>, <%= pascalCase(pluralDomainName) %>Domain} from './<%= paramCase(pluralDomainName) %>.domain';
import {<%= camelCase(pluralDomainName) %>Adapter} from './<%= paramCase(pluralDomainName) %>.utils';
const {
selectIds,
selectEntities,
selectAll,
selectTotal,
} = <%= camelCase(pluralDomainName) %>Adapter.getSelectors();
export const get<%= pascalCase(pluralDomainName) %>State: MemoizedSelector<<%= pascalCase(singularDomainName) %>, <%= pascalCase(pluralDomainName) %>Domain.State> = createFeatureSelector<<%= pascalCase(pluralDomainName) %>Domain.State>(<%= pascalCase(pluralDomainName) %>Domain.storeName);
export const select<%= pascalCase(singularDomainName) %>Entities = createSelector(
get<%= pascalCase(pluralDomainName) %>State,
(state: <%= pascalCase(pluralDomainName) %>Domain.State): Dictionary<<%= pascalCase(singularDomainName) %>> => selectEntities(state),
);
export const select<%= pascalCase(singularDomainName) %>Ids = createSelector(
get<%= pascalCase(pluralDomainName) %>State,
(state: <%= pascalCase(pluralDomainName) %>Domain.State): number[] | string[] => selectIds(state),
);
export const selectCurrent<%= pascalCase(singularDomainName) %>Id = createSelector(
get<%= pascalCase(pluralDomainName) %>State,
(state: <%= pascalCase(pluralDomainName) %>Domain.State): number => getPropertyValue(state, 'currentId', null),
);
export const selectCurrent<%= pascalCase(singularDomainName) %> = createSelector(
get<%= pascalCase(pluralDomainName) %>State,
selectCurrent<%= pascalCase(singularDomainName) %>Id,
(state: <%= pascalCase(pluralDomainName) %>Domain.State, currentId: number): <%= pascalCase(singularDomainName) %> | null => {
const entities = selectEntities(state);
return isItemDefined(entities) && !!currentId ? entities[currentId] : null;
},
);
export const selectAll<%= pascalCase(pluralDomainName) %> = createSelector(
get<%= pascalCase(pluralDomainName) %>State,
(state: <%= pascalCase(pluralDomainName) %>Domain.State): <%= pascalCase(singularDomainName) %>[] => selectAll(state),
);
export const selectTotal<%= pascalCase(pluralDomainName) %> = createSelector(
get<%= pascalCase(pluralDomainName) %>State,
(state: <%= pascalCase(pluralDomainName) %>Domain.State): number => selectTotal(state),
);