feat(firestore): add DML stages, literals source, and atomic execution option to Android SDK pipelines - #8524
feat(firestore): add DML stages, literals source, and atomic execution option to Android SDK pipelines#8524wu-hui wants to merge 3 commits into
Conversation
…erals source, and atomic execution option to Android SDK pipelines - Implement DeleteStage, UpdateStage, InsertStage, UpsertStage, and LiteralsSource in stage.kt - Add literals() source method to PipelineSource and delete(), update(), insert(), upsert() to Pipeline in Pipeline.kt - Add withAtomic() execution option to ExecuteOptions and wire proto request (newTransaction + autoCommitTransaction) - Add DmlTests.kt unit test suite verifying proto generation for all stages - Add integration test methods in PipelineTest.java BUG=b/545136695 TAG=agy
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. |
|
Did you forget to add a changelog entry? (Add the 'no-changelog' label to the PR or 'NO_RELEASE_CHANGE' to the description to silence this warning.) |
📝 PRs merging into main branchOur main branch should always be in a releasable state. If you are working on a larger change, or if you don't want this change to see the light of the day just yet, consider using a feature branch first, and only merge into the main branch when the code complete and ready to be released. |
|
The public api surface has changed for the subproject firebase-firestore: Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly. |
|
The public api surface has changed for the subproject firebase-firestore: Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly. |
|
The public api surface has changed for the subproject firebase-firestore: Please update the api.txt files for the subprojects being affected by this change by running ./gradlew ${subproject}:generateApiTxtFile. Also perform a major/minor bump accordingly. |
Summary
Adds full DML stages (Delete, Update, Insert, Upsert), Literals source, and atomic execution option to the Android SDK (
firebase-android-sdk) Firestore Pipelines subsystem to achieve parity with Web and Node SDKs.Key Changes
stage.kt: AddedDeleteStage,UpdateStage,InsertStage,UpsertStage, andLiteralsSource.options.kt: AddedhasAtomic()helper method toInternalOptions.Pipeline.kt:withAtomic(atomic: Boolean)method toExecuteOptions.toExecutePipelineRequestto configurenewTransaction(readWrite) andautoCommitTransaction = truewhenatomicis enabled.literals(vararg data: Map<String, Any?>)source builder method toPipelineSource.delete(),update(...),insert(...), andupsert(...)stage builder methods toPipeline.DmlTests.ktverifying proto generation and options encoding for all stages.PipelineTest.java.Buganizer Ticket
Fixes http://b/545136695 (under umbrella http://b/500350942)