|
1 | 1 | use super::*; |
2 | | -use crate::inputs::RecordQueryFilterInput; |
| 2 | +use crate::inputs::{RecordQueryFilterInput, UpdateRecordSelectorsInput}; |
3 | 3 | use crate::query_graph_builder::write::limit::validate_limit; |
4 | 4 | use crate::query_graph_builder::write::write_args_parser::*; |
5 | 5 | use crate::{ |
@@ -39,27 +39,23 @@ pub(crate) fn update_record( |
39 | 39 | Some(&field), |
40 | 40 | )?; |
41 | 41 |
|
42 | | - if query_schema.relation_mode().is_prisma() { |
| 42 | + if !query_schema.has_capability(ConnectorCapability::UpdateReturning) || query_schema.relation_mode().is_prisma() { |
43 | 43 | let read_parent_node = graph.create_node(utils::read_id_infallible( |
44 | 44 | model.clone(), |
45 | 45 | model.shard_aware_primary_identifier(), |
46 | | - filter, |
| 46 | + filter.clone(), |
47 | 47 | )); |
48 | 48 |
|
49 | | - utils::insert_emulated_on_update(graph, query_schema, &model, &read_parent_node, &update_node)?; |
| 49 | + if query_schema.relation_mode().is_prisma() { |
| 50 | + utils::insert_emulated_on_update(graph, query_schema, &model, &read_parent_node, &update_node)?; |
| 51 | + } |
50 | 52 |
|
51 | 53 | graph.create_edge( |
52 | 54 | &read_parent_node, |
53 | 55 | &update_node, |
54 | | - QueryGraphDependency::ProjectedDataDependency( |
| 56 | + QueryGraphDependency::ProjectedDataSinkDependency( |
55 | 57 | model.shard_aware_primary_identifier(), |
56 | | - Box::new(move |mut update_node, parent_ids| { |
57 | | - if let Node::Query(Query::Write(WriteQuery::UpdateRecord(ref mut ur))) = update_node { |
58 | | - ur.set_record_filter(parent_ids.into()); |
59 | | - } |
60 | | - |
61 | | - Ok(update_node) |
62 | | - }), |
| 58 | + RowSink::All(&UpdateRecordSelectorsInput), |
63 | 59 | Some(DataExpectation::non_empty_rows( |
64 | 60 | MissingRecord::builder().operation(DataOperation::Update).build(), |
65 | 61 | )), |
|
0 commit comments