ObjectBox

This commit is contained in:
Sven committed 2025-10-23 11:28:03 +02:00
1 parent e548f62bde
commit f8317be627
60 files changed
+2367 -15049

No files matched your search

+12 -27
View File
@@ -5,20 +5,12 @@ import 'package:synchronized/synchronized.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:geolocator/geolocator.dart';
import 'package:isar/isar.dart';
import 'package:path_provider/path_provider.dart';
import 'package:shared_map/shared_map.dart';
import 'package:stadtbote/messages/pop_content_view_message.dart';
import 'package:stadtbote/model/enqueued_message.dart';
import 'package:stadtbote/model/log_entry.dart';
import 'package:stadtbote/model/chat_message.dart';
import 'package:stadtbote/model/pictures.dart';
import 'package:stadtbote/model/rank.dart';
import 'package:stadtbote/model/location_status.dart';
import 'package:stadtbote/model/task_info.dart';
import 'package:stadtbote/popups/accept_jobs_popup.dart';
import 'package:stadtbote/tools/colored_safe_area.dart';
import 'package:stadtbote/model/session_status.dart';
import 'package:stadtbote/tools/connection_status.dart';
import 'package:stadtbote/tools/messages/job_deleted_message.dart';
import 'package:stadtbote/tools/messages/job_received_message.dart';
@@ -31,6 +23,7 @@ import 'content_views/main_page.dart';
import 'content_views/utils/content_view_widget.dart';
import 'content_views/utils/widget_stack.dart';
import 'model/job.dart';
import 'objectbox.g.dart';
import 'tools/constants.dart';
import 'tools/util.dart';
@@ -62,17 +55,7 @@ Future<void> main() async {
MQClient.instance.declareQueue(Constants.messageTopicBWVEnabled);
final dir = await getApplicationDocumentsDirectory();
MyApp.isarInstance = await Isar.open([
SessionStatusSchema,
LocationStatusSchema,
JobSchema,
TaskInfoSchema,
ChatMessageSchema,
EnqueuedMessageSchema,
LogEntrySchema,
RankingSchema,
PictureSchema
], directory: dir.path, name: "database_v1");
MyApp.objectBoxStore = await openStore(directory: dir.path);
await _clearLog();
@@ -85,9 +68,12 @@ Future<void> main() async {
Future<void> _clearLog() async {
var dateTime = DateTime.now().add(const Duration(days: -7));
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.logEntrys.where().filter().timeLessThan(dateTime).deleteAll();
});
final box = MyApp.objectBoxStore.box<LogEntry>();
final query = box.query(LogEntry_.time.lessThan(dateTime.millisecondsSinceEpoch)).build();
final oldEntries = query.find();
query.close();
box.removeMany(oldEntries.map((e) => e.id).toList());
}
void _traceUncaughtExceptions(Object error, StackTrace stackTrace) {
@@ -100,7 +86,7 @@ class MyApp extends StatefulWidget {
static final appNavigatorKey = GlobalKey<NavigatorState>();
static late Isar isarInstance;
static late Store objectBoxStore;
static Position? _currentPosition;
static final Lock _positionLock = Lock();
@@ -394,12 +380,11 @@ class _MainState extends State<Main> with SingleTickerProviderStateMixin, Produc
callback: (message) async {
var removeJobMessage = message.payload as RemoveJobMessage;
var job = await MyApp.isarInstance.jobs.where().filter().idEqualTo(removeJobMessage.id).findFirst();
final box = MyApp.objectBoxStore.box<Job>();
var job = box.get(removeJobMessage.id);
if (job != null) {
await MyApp.isarInstance.writeTxn(() async {
await MyApp.isarInstance.jobs.where().filter().idEqualTo(removeJobMessage.id).deleteAll();
});
box.remove(removeJobMessage.id);
sendMessage(
routingKey: Constants.messageTopicJobDeleted,