@zola_do/collection-query
v0.1.10
Published
TypeORM query builder for filter, sort, paginate
Readme
@zola_do/collection-query
TypeORM query builder for filter, sort, and paginate operations on collections.
Installation
# Install individually
npm install @zola_do/collection-query
# Or via meta package
npm install @zola_do/nestjs-sharedUsage
Decoding Query Strings
Parse a q query parameter from list endpoints into a CollectionQuery object:
import { decodeCollectionQuery } from '@zola_do/collection-query';
@Get()
async findAll(@Query('q') q?: string) {
const query = decodeCollectionQuery(q);
return await this.service.findAll(query);
}Query Format
The q parameter supports:
s— Select fields (comma-separated)w— Where conditions (filter operators)t— Take (limit)sk— Skip (offset)o— Order byi— Includes (relations)c— Count only
Example: q=w=column$eq$value&t=10&sk=0&o=createdAt$desc
Building Queries
Use QueryConstructor to build TypeORM queries from a CollectionQuery:
import { QueryConstructor, CollectionQuery } from '@zola_do/collection-query';
const dataQuery = QueryConstructor.constructQuery<T>(repository, query);
const [result, total] = await dataQuery.getManyAndCount();Filter Operators
Use FilterOperators for where conditions:
import { FilterOperators } from '@zola_do/collection-query';
query.where.push([
{ column: 'status', value: 'active', operator: FilterOperators.Equals },
{ column: 'createdAt', value: '2024-01-01', operator: FilterOperators.Gte },
]);Encoding Queries
Encode a CollectionQuery back to a URL string:
import { encodeCollectionQuery } from '@zola_do/collection-query';
const queryString = encodeCollectionQuery(query);Exports
decodeCollectionQuery— Parse query string to CollectionQueryencodeCollectionQuery— Serialize CollectionQuery to stringQueryConstructor— Build TypeORM queries from CollectionQueryFilterOperators— Filter operator constantsFilterSeparators— Separator constants for query strings
Related Packages
- @zola_do/core — Shared entities and types
- @zola_do/crud — Uses collection-query for list endpoints
- @zola_do/interceptors — TenantInterceptor extends query with tenant filters
