@@ -149,13 +149,14 @@ decode_value(<<4:32/little-unsigned, Rest/binary>>) ->
149149
150150% %====================================================================
151151% % Request Encoding
152- % % Rust: enum Requests { Crap=0, Select=1, Insert=2 }
152+ % % Rust: enum Requests { Crap=0, Select=1, Execute=2, Run=3 }
153153% %====================================================================
154154
155155-type crap_request () :: {crap , binary ()}.
156156-type select_request () :: {select , binary (), binary (), [value ()]}.
157157-type insert_request () :: {insert , binary (), binary (), [value ()]}.
158- -type request () :: crap_request () | select_request () | insert_request ().
158+ -type run_request () :: {run , binary (), binary ()}.
159+ -type request () :: crap_request () | select_request () | insert_request () | run_request ().
159160
160161-spec encode_request (request ()) -> binary ().
161162encode_request ({crap , Reason }) ->
@@ -171,22 +172,29 @@ encode_request({select, Db, Query, Params}) ->
171172 ParamsBin /binary >>;
172173
173174encode_request ({insert , Db , Query , Params }) ->
174- % % Requests::Insert(Insert { db, query, params })
175+ % % Requests::Execute(Execute { db, query, params })
175176 ParamsBin = encode_vec (fun encode_value /1 , Params ),
176177 <<(encode_u32 (2 ))/binary ,
177178 (encode_string (Db ))/binary ,
178179 (encode_string (Query ))/binary ,
179- ParamsBin /binary >>.
180+ ParamsBin /binary >>;
181+
182+ encode_request ({run , Db , Sql }) ->
183+ % % Requests::Run(Run { db, sql })
184+ <<(encode_u32 (3 ))/binary ,
185+ (encode_string (Db ))/binary ,
186+ (encode_string (Sql ))/binary >>.
180187
181188% %====================================================================
182189% % Response Decoding
183- % % Rust: enum Responses { BadRequest=0, RowsResult=1, Updated=2 }
190+ % % Rust: enum Responses { BadRequest=0, RowsResult=1, Updated=2, RunResult=3 }
184191% %====================================================================
185192
186193-type bad_request_response () :: {bad_request , binary ()}.
187194-type rows_result_response () :: {rows_result , {ok , [[value ()]]} | {error , binary ()}}.
188195-type updated_response () :: {updated , {ok , non_neg_integer ()} | {error , binary ()}}.
189- -type response () :: bad_request_response () | rows_result_response () | updated_response ().
196+ -type run_result_response () :: {run_result , ok | {error , binary ()}}.
197+ -type response () :: bad_request_response () | rows_result_response () | updated_response () | run_result_response ().
190198
191199-spec decode_response (binary ()) -> response ().
192200decode_response (<<0 :32 /little -unsigned , Rest /binary >>) ->
@@ -200,7 +208,11 @@ decode_response(<<1:32/little-unsigned, Rest/binary>>) ->
200208
201209decode_response (<<2 :32 /little -unsigned , Rest /binary >>) ->
202210 % % Updated: enum { Ok(u64)=0, Error(String)=1 }
203- decode_updated (Rest ).
211+ decode_updated (Rest );
212+
213+ decode_response (<<3 :32 /little -unsigned , Rest /binary >>) ->
214+ % % RunResult: enum { Ok=0, Error(String)=1 }
215+ decode_run_result (Rest ).
204216
205217decode_rows_result (<<0 :32 /little -unsigned , Rest /binary >>) ->
206218 % % RowsResult::Ok(Vec<Vec<Value>>)
@@ -221,3 +233,11 @@ decode_updated(<<1:32/little-unsigned, Rest/binary>>) ->
221233 % % Updated::Error(String)
222234 {Reason , <<>>} = decode_string (Rest ),
223235 {updated , {error , Reason }}.
236+
237+ decode_run_result (<<0 :32 /little -unsigned , _Rest /binary >>) ->
238+ % % RunResult::Ok
239+ {run_result , ok };
240+ decode_run_result (<<1 :32 /little -unsigned , Rest /binary >>) ->
241+ % % RunResult::Error(String)
242+ {Reason , <<>>} = decode_string (Rest ),
243+ {run_result , {error , Reason }}.
0 commit comments