fooder-app/lib/storage/diary.dart

44 lines
1.2 KiB
Dart
Raw Permalink Normal View History

2024-08-13 09:48:44 +02:00
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<void> createTable(Batch batch) async {
batch.execute('''
CREATE TABLE diary(
date TEXT PRIMARY KEY,
content TEXT,
needs_sync BOOLEAN,
last_sync TEXT
)
''');
}
Future<Diary?> 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<String, dynamic>)['content']));
}
Future<void> 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);
}
}