Skip to content

v3.10.0

Compare
Choose a tag to compare
@lroal lroal released this 11 May 20:44
· 71 commits to master since this release

Now supporting aggregates

You can count records and aggregate numerical columns. This can either be done across rows or separately for each row.
Supported functions include:

  • count
  • sum
  • min
  • max
  • avg

The aggregate function effeciently groups data together.
In this particular example , for each customer, it counts the number of lines associated with their orders and calculates the total amount of these lines.
Under the hood, it will run an sql group by customerId and customerName.

import map from './map';
const db = map.sqlite('demo.db');

getAggregates();

async function getAggregates() {
  const orders = await db.order.aggregate({
    where: x => x.orderDate.greaterThan(new Date(2022, 0, 11, 9, 24, 47)),
    customerId: x => x.customerId,
    customerName: x => x.customer.name,
    numberOfLines: x => x.count(x => x.lines.id),
    totals: x => x.sum(x => lines.amount)    
  });
}