import 'dart:async'; import 'dart:convert'; import 'package:sqflite/sqflite.dart'; import 'package:fooder/models/diary.dart'; import 'package:fooder/storage/based.dart'; class DiaryStorage extends StorageBased { DiaryStorage({required super.db}); static Future createTable(Batch batch) async { batch.execute(''' CREATE TABLE diary( date TEXT PRIMARY KEY, content TEXT, needs_sync BOOLEAN, last_sync TEXT ) '''); } Future get({required DateTime date}) async { var result = await db .query('diary', where: 'date = ?', whereArgs: [date.toIso8601String()]); if (result.isEmpty) { return null; } return Diary.fromJson( jsonDecode((result.first as Map)['content'])); } Future insert(Diary diary, {bool needsSync = false}) async { var data = { 'id': diary.id, 'date': diary.date.toIso8601String(), 'content': jsonEncode(diary.toMap()), 'needs_sync': needsSync, 'last_sync': needsSync ? DateTime.now().toIso8601String() : null, }; await db.insert('diary', data, conflictAlgorithm: ConflictAlgorithm.replace); } }