searchMetadatas method

  1. @override
Future<Iterable<Metadata>> searchMetadatas(
  1. String search,
  2. int limit
)
override

Search by name, nip05

Implementation

@override
Future<Iterable<Metadata>> searchMetadatas(String search, int limit) async {
  sembast.Filter? filter;
  if (search.isNotEmpty) {
    final pattern = RegExp.escape(search);
    filter = sembast.Filter.or([
      sembast.Filter.matchesRegExp(
          'name', RegExp(pattern, caseSensitive: false)),
      sembast.Filter.matchesRegExp(
          'displayName', RegExp(pattern, caseSensitive: false)),
      sembast.Filter.matchesRegExp(
          'about', RegExp(pattern, caseSensitive: false)),
      sembast.Filter.matchesRegExp(
          'nip05', RegExp(pattern, caseSensitive: false)),
    ]);
  }

  final finder = sembast.Finder(
    filter: filter,
    limit: limit,
    sortOrders: [sembast.SortOrder('updatedAt', false)],
  );

  final records = await _metadataStore.find(_database, finder: finder);
  return records
      .map((record) => MetadataExtension.fromJsonStorage(record.value))
      .toList();
}