search method
Search for records in a table.
Implementation
Future<List<Map<String, dynamic>>> search({
required String table,
String? text,
List<double>? vector,
dynamic where, // String or Map<String, dynamic>
int? limit,
List<String>? select,
}) async {
// If 'where' is a Map, convert it to an AND-joined string.
String? whereClause;
if (where is Map<String, dynamic>) {
final parts = <String>[];
where.forEach((key, value) {
parts.add("$key = ${_escapeValue(value)}");
});
whereClause = parts.join(" AND ");
} else if (where is String) {
whereClause = where;
}
final payload = <String, dynamic>{"table": table, "where": whereClause, "text": text};
if (limit != null) {
payload["limit"] = limit;
}
if (select != null) {
payload["select"] = select;
}
if (vector != null) {
payload["vector"] = vector;
}
final response = (await room.sendRequest("database.search", payload) as JsonResponse);
// If your sendRequest returns a structure like { "json": { "results": [...] } }
// Then parse it accordingly:
final results = response.json["results"];
if (results is List) {
return results.map((e) => e as Map<String, dynamic>).toList();
}
return [];
}