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.