querySqliteRows function

SqliteTablePage querySqliteRows(
  1. SqliteDatabase db,
  2. String table, {
  3. required int limit,
  4. required int offset,
  5. String? order,
  6. String? where,
})

Runs a paged table query (omp's queryRows).

Implementation

SqliteTablePage querySqliteRows(
  SqliteDatabase db,
  String table, {
  required int limit,
  required int offset,
  String? order,
  String? where,
}) {
  final columns = _getTableColumns(db, table);
  final validatedWhere = _validateWhereClause(where);
  final whereClause = validatedWhere != null ? ' WHERE $validatedWhere' : '';
  final orderClause = _resolveOrderClause(order, columns);
  final countSql =
      'SELECT COUNT(*) AS count FROM ${_quoteSqliteIdentifier(table)}$whereClause';
  final selectSql =
      'SELECT * FROM ${_quoteSqliteIdentifier(table)}$whereClause$orderClause'
      ' LIMIT ? OFFSET ?';
  final totalCount = (db.select(countSql).rows.first['count']! as int);
  if (db.parameterCount(selectSql) != 2) {
    throw StateError(
      'SQLite where clause changed the expected pagination parameters; use '
      'q=SELECT ... for raw SQL',
    );
  }
  final rows = db.select(selectSql, parameters: [limit, offset]).rows;
  return SqliteTablePage(columns: columns, rows: rows, totalCount: totalCount);
}