import 'package:diameter/main.dart'; import 'package:diameter/utils/date_time_utils.dart'; import 'package:objectbox/objectbox.dart'; import 'package:diameter/objectbox.g.dart' show LogEntry_; @Entity(uid: 752131069307970560) class LogEntry { static final Box box = objectBox.store.box(); // properties int id; bool deleted; @Property(type: PropertyType.date) DateTime time; int? mgPerDl; double? mmolPerL; double? bolusGlucose; int? delayedBolusDuration; double? delayedBolusRate; String? notes; // constructor LogEntry({ this.id = 0, this.deleted = false, required this.time, this.mgPerDl, this.mmolPerL, this.bolusGlucose, this.delayedBolusDuration, this.delayedBolusRate, this.notes, }); // methods static LogEntry? get(int id) => id == 0 ? null : box.get(id); static List getAll() => box.getAll(); static void put(LogEntry logEntry) => box.put(logEntry); static void remove(int id) { final item = box.get(id); if (item != null) { item.deleted = true; box.put(item); } } static Map> getDailyEntryMap() { Map> dateMap = >{}; QueryBuilder allByDate = box.query(LogEntry_.deleted.equals(false)) ..order(LogEntry_.time, flags: Order.descending); List entries = allByDate.build().find(); DateTime? date; for (LogEntry entry in entries) { date = DateTime.utc(entry.time.year, entry.time.month, entry.time.day); dateMap.putIfAbsent(date, () => []).add(entry); } return dateMap; } @override String toString() { return DateTimeUtils.displayDateTime(time); } }