import 'package:journaler/db.dart'; class Note { final String date; String content; Note({required this.date, required this.content}); } class Scratch { final String date; String content; Scratch({required this.date, required this.content}); } Future getLatestNote() async { final note = await DB.db.rawQuery( 'SELECT content, date FROM notes ORDER BY date DESC LIMIT 1', ); if (note.isEmpty) { return null; } return Note( date: note[0]['date'] as String, content: note[0]['content'] as String, ); } Future createNote(String content) async { if (content.isEmpty) { return; } await DB.db.insert('notes', {'content': content}); } Future updateNote(Note note) async { await DB.db.update( 'notes', {'content': note.content}, where: 'date = ?', whereArgs: [note.date], ); } Future getLatestScratch() async { final scratch = await DB.db.rawQuery( 'SELECT content, date FROM scratches ORDER BY date DESC LIMIT 1', ); if (scratch.isEmpty) { return null; } else { return Scratch( date: scratch[0]['date'] as String, content: scratch[0]['content'] as String, ); } } Future createScratch(String content) async { await DB.db.insert('scratches', {'content': content}); } // Get the note immediately older than the given date Future getPreviousNote(String currentDate) async { final List> notes = await DB.db.query( 'notes', where: 'date < ?', whereArgs: [currentDate], orderBy: 'date DESC', limit: 1, ); if (notes.isNotEmpty) { return Note( date: notes.first['date'] as String, content: notes.first['content'] as String, ); } return null; } // Get the note immediately newer than the given date Future getNextNote(String currentDate) async { final List> notes = await DB.db.query( 'notes', where: 'date > ?', whereArgs: [currentDate], orderBy: 'date ASC', limit: 1, ); if (notes.isNotEmpty) { return Note( date: notes.first['date'] as String, content: notes.first['content'] as String, ); } // If there's no newer note, it means we might be at the latest // but let's double-check by explicitly getting the latest again. // This handles the case where the `currentDate` might not be the absolute latest. return getLatestNote(); }