From 27f21a23fe8a3ad885192f519ed33fcc92dd9f71 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sun, 25 May 2025 10:05:48 +0200 Subject: [PATCH] Fix settings by making key filterable in meilisearc --- lib/main.dart | 1 - lib/meilifix.dart | 39 +++++++++++++++++---------------------- lib/meilisearch.dart | 5 +++++ 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index b4cd38e..7a10bcb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:journaler/db.dart'; import 'package:journaler/notes.dart'; import 'package:journaler/utils.dart'; import 'package:system_tray/system_tray.dart'; diff --git a/lib/meilifix.dart b/lib/meilifix.dart index b73f08c..7f0e9a8 100644 --- a/lib/meilifix.dart +++ b/lib/meilifix.dart @@ -97,39 +97,34 @@ Future>> getAllDocuments(String index) async { final headers = await _getHeaders(); final allDocuments = >[]; var offset = 0; - const limit = 100; // Process in batches of 100 + const limit = 100; while (true) { - final searchCondition = MeilisearchQuery( - q: '', - limit: limit, - offset: offset, - ); - final response = await http.post( - Uri.parse('$endpoint/indexes/$index/search'), + final response = await http.get( + Uri.parse('$endpoint/indexes/$index/documents?limit=$limit&offset=$offset'), headers: headers, - body: jsonEncode(searchCondition.toJson()), ); if (response.statusCode != 200) { throw Exception('Failed to get documents: ${response.statusCode}'); } - final responseJson = MeilisearchResponse.fromJson( - jsonDecode(response.body), - ); - final hits = List>.from(responseJson.hits); - - if (hits.isEmpty) { + final responseJson = jsonDecode(response.body); + final documents = List>.from(responseJson['results']); + + if (documents.isEmpty) { break; } - - allDocuments.addAll(hits); + + allDocuments.addAll(documents); + print('Found ${allDocuments.length} documents so far in $index'); + + if (documents.length < limit) { + break; + } + offset += limit; - - if (hits.length < limit) { - break; - } } - + + print('Total documents found in $index: ${allDocuments.length}'); return allDocuments; } diff --git a/lib/meilisearch.dart b/lib/meilisearch.dart index 439728b..fd1abc7 100644 --- a/lib/meilisearch.dart +++ b/lib/meilisearch.dart @@ -142,6 +142,11 @@ Future init() async { body: jsonEncode({'uid': settingsIndex, 'primaryKey': 'key'}), ); } + await http.put( + Uri.parse('$endpoint/indexes/$settingsIndex/settings/filterable-attributes'), + headers: headers, + body: jsonEncode(['key', 'value']), + ); } Future indexExists(String index) async {