groupByDocuments 🆕
Add GROUP BY clause (set the grouping options of the result set).
Signature
groupByDocuments<T extends string>(session: MySQLSession, groupBy: Group<S, T>): Promise<Array<IDocument<T>>>;
groupByDocuments<T extends string>(session: MySQLXSession, groupBy: Group<S, T>): Promise<Array<IDocument<T>>>;
Example
// employeeRouter.{ts|js}
import { GroupBy } from 'crud-node';
import { employeeController } from './employeeController';
import { EmployeeProps } from './schemas/employee';
const transacted = true;
await db.usingSession(async (session) => {
const data = await employeeController.groupByDocuments<'fired' | EmployeeProps.createdAt>(
session,
GroupBy<EmployeeProps, 'fired' | EmployeeProps.createdAt>()
.fields(EmployeeProps.createdAt)
.aggregate(EmployeeProps._id, 'fired', AGG.COUNT)
.toCriteria(),
);
return data;
}, transacted);
// employeeRouter.{ts|js}
import { GroupBy } from 'crud-node';
import { employeeController } from './employeeController';
import { EmployeeProps } from './schemas/employee';
const transacted = true;
await db.usingSession(async (session) => {
const data = await employeeController.groupByDocuments<'fired' | EmployeeProps.createdAt>(
session,
GroupBy<EmployeeProps, 'fired' | EmployeeProps.createdAt>()
.fields(EmployeeProps.createdAt)
.aggregate(EmployeeProps._id, 'fired', AGG.COUNT)
.toCriteria(),
);
return data;
}, transacted);
Last updated