batchUpsert method
Future<void>
batchUpsert(
- List<T> items
)
override
Implementation
@override
Future<void> batchUpsert(List<T> items) async {
// Appwrite doesn't have multi-document transactions for Databases.
// Perform sequential upserts (create or update by id).
final payloads = buildUpsertPayloads(items);
for (final entry in payloads) {
final id = entry.$1;
final data = entry.$2;
try {
// Try update first
await config.tablesDB.updateRow(
databaseId: config.databaseId,
tableId: config.tableId,
rowId: id,
data: data,
);
} on aw.AppwriteException catch (_) {
// Create if not exists
await config.tablesDB.createRow(
databaseId: config.databaseId,
tableId: config.tableId,
rowId: id, // custom id to align with our domain id
data: data,
);
}
}
}