From b30fd5ca7ebbb76f6e21f8b0acba2a847ac6f8a1 Mon Sep 17 00:00:00 2001 From: Alexandre Roux Date: Sun, 22 Sep 2024 23:54:15 +0200 Subject: [PATCH] feat: add CvWriteBatch.refSet/refSetMap,refDelete,refUpdate/defUpdateMap --- .../lib/src/v2/firestore_extension.dart | 44 +++++++++++++++---- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/app_cv_firestore/lib/src/v2/firestore_extension.dart b/app_cv_firestore/lib/src/v2/firestore_extension.dart index 9f45f29..23911db 100644 --- a/app_cv_firestore/lib/src/v2/firestore_extension.dart +++ b/app_cv_firestore/lib/src/v2/firestore_extension.dart @@ -302,23 +302,51 @@ class CvFirestoreWriteBatch extends WriteBatch { [SetOptions? options]) => _writeBatch.set(ref, data, options); - @override - void update(DocumentReference ref, Map data) => - _writeBatch.update(ref, data); - - @override - void delete(DocumentReference ref) => _writeBatch.delete(ref); - /// set document void cvSet(CvFirestoreDocument document, [SetOptions? options]) { _ensurePathSet(document); set(_firestore.doc(document.path), document.toMap(), options); } - void cvUpdate(CvFirestoreDocument document) { + void refSet( + CvDocumentReference ref, T document, + [SetOptions? options]) { + refSetMap(ref, document.toMap(), options); + } + + /// Set + void refSetMap( + CvDocumentReference ref, Model map, + [SetOptions? options]) async { + set(ref.raw(_firestore), map, options); + } + + @override + void update(DocumentReference ref, Map data) => + _writeBatch.update(ref, data); + + void cvUpdate(T document) { _ensurePathSet(document); update(_firestore.doc(document.path), document.toMap()); } + void refUpdate( + CvDocumentReference ref, T document) { + refUpdateMap(ref, document.toMap()); + } + + void refUpdateMap( + CvDocumentReference ref, Model map) { + update(ref.raw(_firestore), map); + } + + @override + void delete(DocumentReference ref) => _writeBatch.delete(ref); + + void refDelete(CvDocumentReference ref) => + delete(ref.raw(_firestore)); + + // ? now + // @Deprecated('use refDelete') void cvDelete(String path) => delete(_firestore.doc(path)); }