@@ -160,6 +160,22 @@ impl DatabaseHandler {
160160 "Both add_key_values and remove_key_values are empty." ,
161161 ) ) ;
162162 }
163+ if !rm_key_values. 0 . is_empty ( ) {
164+ let object = Object :: get ( id, transaction_client)
165+ . await ?
166+ . ok_or ( anyhow ! ( "Dataset does not exist." ) ) ?;
167+ for kv in rm_key_values. 0 {
168+ if kv. variant == KeyValueVariant :: STATIC_LABEL {
169+ return Err ( anyhow ! ( "Cannot remove static labels." ) ) ;
170+ }
171+ if kv. variant == KeyValueVariant :: HOOK_STATUS {
172+ return Err ( anyhow ! (
173+ "Cannot remove hook_status outside of hook_callback"
174+ ) ) ;
175+ }
176+ object. remove_key_value ( transaction_client, kv) . await ?;
177+ }
178+ }
163179 if !add_key_values. 0 . is_empty ( ) {
164180 for kv in add_key_values. 0 {
165181 match kv. variant {
@@ -182,22 +198,6 @@ impl DatabaseHandler {
182198 }
183199 }
184200
185- if !rm_key_values. 0 . is_empty ( ) {
186- let object = Object :: get ( id, transaction_client)
187- . await ?
188- . ok_or ( anyhow ! ( "Dataset does not exist." ) ) ?;
189- for kv in rm_key_values. 0 {
190- if kv. variant == KeyValueVariant :: STATIC_LABEL {
191- return Err ( anyhow ! ( "Cannot remove static labels." ) ) ;
192- }
193- if kv. variant == KeyValueVariant :: HOOK_STATUS {
194- return Err ( anyhow ! (
195- "Cannot remove hook_status outside of hook_callback"
196- ) ) ;
197- }
198- object. remove_key_value ( transaction_client, kv) . await ?;
199- }
200- }
201201 self . evaluate_rules ( & vec ! [ id] , transaction_client) . await ?;
202202 transaction. commit ( ) . await ?;
203203
0 commit comments