This is a Parameter Builder for the Viewton library, designed to make constructing client-side queries more declarative and easier.
It is intended for use in environments where JavaScript is used for implementing client side (for instance classical font-end).
It is a full analog of the ViewtonQueryBuilder.
The builder includes all parameters that can be used when constructing a query to the backend.
To use, simply inherit from the ViewtonQueryBuilder class and specify which fields can be used in the query construction.
Base Class:
class SomeClass { id: number; name: string; date:Date constructor(id: number, name: string, date:Date) { this.id = id; this.name = name; this.date = date; } }Builder:
class SomeClassQueryBuilder extends ViewtonQueryBuilder { id():FilterBuilder<SomeClassQueryBuilder> { return super.param('id'); } name():FilterBuilder<SomeClassQueryBuilder> { return super.param('name'); } date():FilterBuilder<SomeClassQueryBuilder> { return super.param('date') } }Using the Builder:
return new SomeClassQueryBuilder() .id().or(1).or(2).or(3).next() .name().ignoreCase().equalsTo('%name%') .date().between('someDate', 'someAnotherDate') .page(1) .pageSize(10) .distinct() .count() .build();Result:
Map(7) { 'id' => '1', 'name' => '^%name%', 'date' => 'someDate..someAnotherDate', 'page' => '1', 'page_size' => '10', 'distinct' => 'true', 'count' => 'true' } The result is a Map<string, string>, which can be used for constructing GET requests as query parameters.