searchChunks method

Future<List<ContentChunkModel>> searchChunks(
  1. String query, {
  2. String? topicId,
  3. String? domainId,
  4. int limit = 8,
})

Implementation

Future<List<ContentChunkModel>> searchChunks(
  String query, {
  String? topicId,
  String? domainId,
  int limit = 8,
}) async {
  final sanitized = _sanitizeSearchQuery(query);
  if (sanitized.isEmpty) return [];

  var request = _client.from('content_chunks');
  dynamic builder;
  if (domainId != null) {
    builder = request
        .select('*, topics!inner(domain_id)')
        .textSearch('fts', "'$sanitized'", type: TextSearchType.websearch)
        .eq('topics.domain_id', domainId);
  } else {
    builder = request.select().textSearch(
      'fts',
      "'$sanitized'",
      type: TextSearchType.websearch,
    );
  }
  if (topicId != null) {
    builder = builder.eq('topic_id', topicId);
  }
  final response = await builder.limit(limit);
  return (response as List<dynamic>)
      .map((row) => ContentChunkModel.fromJson(row as Map<String, dynamic>))
      .toList();
}