fetchSince method
Implementation
@override
Future<Delta<T, Id>> fetchSince(SyncScope scope, DateTime? since) async {
// Build PB filter string via helper for testability
final filter = buildFetchFilter(scope, since);
final upserts = <T>[];
final deletes = <Id>[];
int page = 1;
const perPage = 100;
while (true) {
final list = await config.client
.collection(config.collection)
.getList(
page: page,
perPage: perPage,
filter: filter,
sort: config.updatedAtField,
);
for (final rec in list.items) {
final data = Map<String, dynamic>.from(rec.data);
final isDeleted =
config.deletedAtField != null &&
data[config.deletedAtField!] != null;
if (isDeleted) {
final did = config.idFromString(data[config.idField] as String);
deletes.add(did);
} else {
upserts.add(config.fromJson(data));
}
}
if (list.page >= list.totalPages) break;
page += 1;
}
final serverTs = await getServerTime();
return Delta<T, Id>(
upserts: upserts,
deletes: deletes,
serverTimestamp: serverTs,
);
}