getOneRandom_ method
Implementation
Future<T?> getOneRandom_(String? correlationId, String? filter) async {
var query = 'SELECT COUNT(*) AS count FROM ' + this.quotedTableName_();
if (filter != null) {
query += " WHERE " + filter;
}
var res = await client_!.query(query);
var count = res.length;
query = "SELECT * FROM " + this.quotedTableName_();
if (filter != null) {
query += " WHERE " + filter;
}
var pos = (Random().nextDouble() * count).truncate();
query += " LIMIT 1" + " OFFSET " + pos.toString();
res = await client_!.query(query);
var mapItem = res.toList().isNotEmpty ? res.toList()[0].fields : null;
if (mapItem == null)
this.logger_.trace(
correlationId, "Random item wasn't found from %s", [this.tableName_]);
else
this.logger_.trace(
correlationId, "Retrieved random item from %s", [this.tableName_]);
var item = this.convertToPublic_(mapItem);
return item as T?;
}