@@ -50,9 +50,17 @@ pub async fn translate_stmt(
5050 Statement :: Delete ( delete) => match & delete. from {
5151 FromTable :: WithFromKeyword ( from) => {
5252 let table_name = get_default_table ( from) ;
53- let table_name = table_name. as_str ( ) ;
53+ let table_name_str = table_name. as_str ( ) ;
5454 let selection = delete. selection . to_owned ( ) . unwrap ( ) ;
55- translate_delete ( ts_query, & selection, table_name, db_conn) . await ?;
55+ translate_delete ( ts_query, & selection, table_name_str, db_conn) . await ?;
56+
57+ // Handle RETURNING clause if present
58+ if delete. returning . is_some ( ) {
59+ let returning = delete. returning . clone ( ) . unwrap ( ) ;
60+ let query_for_logging = sql_statement. to_string ( ) ;
61+ let query_for_logging_str = & query_for_logging. as_str ( ) ;
62+ translate_insert_returning ( ts_query, & returning, table_name_str, db_conn, query_for_logging_str) . await ?;
63+ }
5664 }
5765 FromTable :: WithoutKeyword ( _) => Err ( TsGeneratorError :: FromWithoutKeyword ( sql_statement. to_string ( ) ) ) ?,
5866 } ,
@@ -61,7 +69,7 @@ pub async fn translate_stmt(
6169 assignments,
6270 from,
6371 selection,
64- returning : _ ,
72+ returning,
6573 or : _,
6674 limit : _,
6775 } => {
@@ -79,6 +87,24 @@ pub async fn translate_stmt(
7987 } ;
8088
8189 translate_update ( ts_query, table, assignments, & from_table, selection, db_conn) . await ?;
90+
91+ // Handle RETURNING clause if present
92+ if returning. is_some ( ) {
93+ let returning_items = returning. clone ( ) . unwrap ( ) ;
94+ // Extract table name from TableWithJoins
95+ let table_name = get_default_table ( & vec ! [ table. clone( ) ] ) ;
96+ let table_name_str = table_name. as_str ( ) ;
97+ let query_for_logging = sql_statement. to_string ( ) ;
98+ let query_for_logging_str = & query_for_logging. as_str ( ) ;
99+ translate_insert_returning (
100+ ts_query,
101+ & returning_items,
102+ table_name_str,
103+ db_conn,
104+ query_for_logging_str,
105+ )
106+ . await ?;
107+ }
82108 }
83109 _ => { }
84110 }
0 commit comments