querySqliteRows function
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);
}