import '../models/note.dart'; import '../repositories/local_note_repository.dart'; import '../repositories/remote_note_repository.dart'; class SyncService { final LocalNoteRepository _local; final RemoteNoteRepository _remote; SyncService({ required LocalNoteRepository local, required RemoteNoteRepository remote, }) : _local = local, _remote = remote; /// Push all local notes to the server, overwriting whatever is there. Future pushAll() async { final notes = await _local.getAll(); for (final note in notes) { try { await _remote.update(note); } catch (_) { // Note doesn't exist on server yet — create it await _remote.save(note); } } } /// Pull all notes from the server, overwriting local storage. Future pullAll() async { final notes = await _remote.getAll(); for (final note in notes) { await _local.save(note); } } /// Sync a single note by id — push local version to server. Future syncNote(String id) async { final note = await _local.getById(id); if (note == null) return; try { await _remote.update(note); } catch (_) { await _remote.save(note); } } }