Advanced Filtering

hypequery provides powerful filtering capabilities through the CrossFilter class and direct query methods. This guide covers all the filtering options available.

Basic Filtering

Use the where method for simple conditions:

const results = await db
  .table('users')
  .where('age', 'gt', 18)
  .where('status', 'eq', 'active')
  .execute();

Complex Filtering with CrossFilter

The CrossFilter class provides more advanced filtering capabilities:

const filter = new CrossFilter()
  .add({
    column: 'status',
    operator: 'in',
    value: ['active', 'pending']
  })
  .addGroup([
    {
      column: 'created_at',
      operator: 'gte',
      value: new Date('2023-01-01')
    },
    {
      column: 'total',
      operator: 'gt',
      value: 1000
    }
  ], 'OR');

const results = await db
  .table('orders')
  .applyCrossFilters(filter)
  .execute();

Date Filtering

Special methods for date-based filtering:

const filter = new CrossFilter()
  .addDateRange('created_at', 'last_30_days')
  .addDateRange('updated_at', 'this_month');

// Or use custom date ranges
filter.lastNDays('created_at', 7);

Available Date Ranges

  • today
  • yesterday
  • last_7_days
  • last_30_days
  • this_month
  • last_month
  • this_quarter
  • year_to_date