pera-trta
v1.0.41
Published
pera-trta is a simple package that provides basic functionalities for your models and collections
Downloads
8
Maintainers
Readme
PERA-TRTA
Simple model/collection package
PERA-TRTA is a simple package that provides basic functionalities for your models and collections.
All you gonna need to do is to extend your custom models and collections
with Model
and Collection
, and you ready to go.
Some of the functionalities that package provide are:
- both
Model
andCollection
classes are heavily based on Typescript generics so IntelliSense support is given for using any of the methods implemented, see the images: img1 img2 img3 - CLI support
- get model property by key
- update some properties of the model
- update only one model property
- store models in the collection
- sort collection items
- find particular item/items
- map collection items ...
Here is the link for documentation pages.
####CLI support:
Instead of manually creating all necessary files, you can use CLI command pt
.
pt -a Person
// pt --all Person will work
// pt --all=Person will work as well
Creates person model, interface and collection files (by appropriate template), each file has suffix -model, -interface, -collection respectively.
pt -i IPerson -m Person -c PersonCollection
// pt --interface IPerson --model Person --collection PersonCollection will work
// pt --interface=IPerson --model=Person --collection=PersonCollection will work as well
Creates IPerson, Person and PersonCollection files.
####Usage example:
category-props.ts
export interface ICategoryProps {
id: number;
name: string;
}
category-model.ts
import { ICategoryProps } from './category-props';
import { Model } from 'pera-trta';
export class CategoryModel extends Model<ICategoryProps> {}
category-collection.ts
import { CategoryModel } from './category-model';
import { ICategoryProps } from './category-props';
import { Collection } from 'pera-trta';
export class CategoryCollection extends Collection<CategoryModel, ICategoryProps> {}
index.ts
import { CategoryModel } from './category-model';
import { CategoryCollection } from './category-collection';
const cc = new CategoryCollection();
const c1 = new CategoryModel({ id: 1, name: 'pera' });
const c2 = new CategoryModel({ id: 2, name: 'trta' });
const c3 = new CategoryModel({ id: 3, name: 'pera' });
// add to collection
cc.add(c1);
cc.add([ c2, c3 ]);
// get all items from collection
console.log(cc.getAll());
// get items count
console.log(cc.getCount);
// map all collection items
cc.map((el: CategoryModel) => {
return el.setByKey('name', el.get('name').toUpperCase());
});
console.log(cc.getAll());
// sort
cc.sortBy('id', 'desc');
console.log(cc.getAll());
// find
console.log(cc.findByKeyValue('name', 'PERA'));
// Remove - removes only first occurrence
cc.remove(c2, 'id');
console.log(cc.getAll());
cc.removeAllByKeyValue('name', 'PERA');
console.log(cc.getAll());