generator-zionapps
Version:
Angular 9 Code Generator
27 lines (21 loc) • 1.5 kB
text/typescript
/**
* <%= pascalCase(singularDomainName) %> Utils
*/
import {createEntityAdapter, EntityAdapter} from '@ngrx/entity';
import {getPropertyValue, hasNoItems, isPropertyDefined} from '@zionapps/core';
import {<%= pascalCase(singularDomainName) %>} from './<%= paramCase(pluralDomainName) %>.domain';
export const canSave<%= pascalCase(singularDomainName) %> = (item: <%= pascalCase(singularDomainName) %>): boolean => isPropertyDefined(item, 'id');
export const canSave<%= pascalCase(singularDomainName) %>List = (list: <%= pascalCase(singularDomainName) %>[]): boolean => {
if (hasNoItems(list)) {
return false;
}
return list.reduce((wasValid, item): boolean => canSave<%= pascalCase(singularDomainName) %>(item) ? wasValid : false, true);
};
export const get<%= pascalCase(singularDomainName) %>ById = (item: <%= pascalCase(singularDomainName) %>): number => getPropertyValue(item, 'id', null);
export const sort<%= pascalCase(singularDomainName) %>ByDate = (a: <%= pascalCase(singularDomainName) %>, b: <%= pascalCase(singularDomainName) %>): number => {
return getPropertyValue(a, 'createdDateTime', 0) > getPropertyValue(b, 'createdDateTime', 0) ? -1 : 1;
};
export const <%= camelCase(pluralDomainName) %>Adapter: EntityAdapter<<%= pascalCase(singularDomainName) %>> = createEntityAdapter<<%= pascalCase(singularDomainName) %>>({
selectId: get<%= pascalCase(singularDomainName) %>ById,
sortComparer: sort<%= pascalCase(singularDomainName) %>ByDate,
});