@solid-nestjs/rest-api
Version:
solid-nestjs Rest-API utilities
57 lines • 2.13 kB
TypeScript
import { Type } from '@nestjs/common';
import { type GroupByArgsFromConfig, type ClassOptions, type GroupByArgs, type FindArgs } from '@solid-nestjs/common';
/**
* Extended configuration for REST API GroupByArgsFrom that includes class options
*/
export interface GroupByArgsFromConfigWithOptions extends Omit<GroupByArgsFromConfig, 'groupByFields'> {
groupByFields?: string[] | Type<any>;
groupByFieldsType?: Type<any>;
options?: ClassOptions & {
/**
* Custom name for the GroupBy input type
* @example 'ProductGroupByInput' instead of default 'GroupedProductArgsRequest'
*/
groupByInputTypeName?: string;
};
}
/**
* Creates a GroupByArgsFrom mixin with REST API decorators.
* This function extends the base GroupByArgsFrom functionality to include
* proper Swagger decorators for REST APIs.
*
* @template T - The entity type (optional, for type inference)
* @param config - Configuration with FindArgs type, fields, and optional class options
* @returns A dynamically generated GroupBy class with REST API decorators
*
* @example
* ```typescript
* import { GroupByArgsFrom } from '@solid-nestjs/rest-api';
*
* export class FindProductArgs extends FindArgsFrom({
* whereType: ProductWhere,
* orderByType: ProductOrderBy
* }) {}
*
* // Using field names
* const ProductGroupByFromArgs = GroupByArgsFrom({
* findArgsType: FindProductArgs,
* groupByFields: ['category', 'supplier', 'status'],
* className: 'ProductGroupByFromFindArgs',
* options: {
* description: 'Group by fields for Product queries'
* }
* });
*
* // Using generated fields class
* const ProductGroupByFields = createGroupByFields(Product, {...});
* const ProductGroupByFromArgs = GroupByArgsFrom({
* findArgsType: FindProductArgs,
* groupByFieldsType: ProductGroupByFields,
* options: {
* description: 'Group by fields for Product queries'
* }
* });
* ```
*/
export declare function GroupByArgsFrom<T = any>(config: GroupByArgsFromConfigWithOptions): Type<GroupByArgs<T> & FindArgs<T>>;
//# sourceMappingURL=groupby-args.mixin.d.ts.map