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.databases.updateDocument(
databaseId: config.databaseId,
collectionId: config.collectionId,
documentId: id,
data: data,
);
} on aw.AppwriteException catch (_) {
// Create if not exists
await config.databases.createDocument(
databaseId: config.databaseId,
collectionId: config.collectionId,
documentId: id, // custom id to align with our domain id
data: data,
);
}
}
}