1#[macro_export]
44macro_rules! msupdate {
45 ($t:expr, {$ik:tt: $iv:expr}, {$($k:tt: [$m:tt, $v:expr]),+$(,)?}) => {
46 {
47 fn type_of<T>(_: T) -> &'static str {
48 std::any::type_name::<T>()
49 }
50 fn get_v_type(t: &'static str) -> &'static str {
51 match t {
52 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
53 t
54 },
55 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
56 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
57 "&f32" | "&f64" | "&f128" | "&bool" => {
58 t
59 },
60 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
61 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
62 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
63 t
64 },
65 "&core::option::Option<&str>" |
66 "&core::option::Option<alloc::string::String>" |
67 "&core::option::Option<&alloc::string::String>" => {
68 "&&str"
69 },
70 "&&core::option::Option<&str>" |
71 "&&core::option::Option<alloc::string::String>" |
72 "&&core::option::Option<&alloc::string::String>" => {
73 "&&str"
74 },
75 "&core::option::Option<u8>" |
76 "&core::option::Option<u16>" |
77 "&core::option::Option<u32>" |
78 "&core::option::Option<u64>" |
79 "&core::option::Option<u128>" |
80 "&core::option::Option<usize>" |
81 "&core::option::Option<i8>" |
82 "&core::option::Option<i16>" |
83 "&core::option::Option<i32>" |
84 "&core::option::Option<i64>" |
85 "&core::option::Option<i128>" |
86 "&core::option::Option<isize>" |
87 "&core::option::Option<f32>" |
88 "&core::option::Option<f64>" |
89 "&core::option::Option<f128>" |
90 "&core::option::Option<bool>" => {
91 "&u8"
92 },
93 "&&core::option::Option<u8>" |
94 "&&core::option::Option<u16>" |
95 "&&core::option::Option<u32>" |
96 "&&core::option::Option<u64>" |
97 "&&core::option::Option<u128>" |
98 "&&core::option::Option<usize>" |
99 "&&core::option::Option<i8>" |
100 "&&core::option::Option<i16>" |
101 "&&core::option::Option<i32>" |
102 "&&core::option::Option<i64>" |
103 "&&core::option::Option<i128>" |
104 "&&core::option::Option<isize>" |
105 "&&core::option::Option<f32>" |
106 "&&core::option::Option<f64>" |
107 "&&core::option::Option<f128>" |
108 "&&core::option::Option<bool>" => {
109 "&u8"
110 },
111 _ => {
112 "&&str"
113 },
114 }
115 }
116 let tmp_ik = $ik.to_string();
117 let i_data = $iv;
118 let i_type = type_of(&i_data);
119 let tmp_i = match i_type {
120 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
121 let mut v_r = i_data.to_string();
122 v_r = v_r.replace("'", "''");
123 "N'".to_string() + &v_r + "'"
124 },
125 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
126 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
127 "&f32" | "&f64" | "&f128" | "&bool" => {
128 i_data.to_string() + ""
129 },
130 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
131 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
132 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
133 i_data.to_string() + ""
134 },
135 _ => {
136 "".to_string()
137 },
138 };
139
140
141 let mut temp_s = String::from("");
142 $(
143 let temp_op = $v;
144 let op_v_type = type_of(&temp_op);
145 let mut temp_v: String;
146 let mut v_type = "&&str";
147 let mut is_option_none = false;
148 let value;
149 if op_v_type.contains("&core::option::Option") {
150 let op_str = format!("{:?}", temp_op);
151 if op_str == "None".to_string() {
152 temp_v = "null".to_string();
153 is_option_none = true;
154 } else {
155 let mut t = op_str.replace("Some(", "");
156 t.pop();
157 temp_v = t;
158 v_type = get_v_type(op_v_type)
159 }
160 } else {
161 temp_v = format!("{:?}", temp_op);
162 v_type = get_v_type(op_v_type)
163 }
164 if temp_v.as_str() == "null" || temp_v.as_str() == "\"null\"" {
165 value = "NULL,".to_string();
166 } else {
167 value = match v_type {
168 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
169 temp_v.remove(0);
170 temp_v.pop();
171 let mut v_r = temp_v.as_str().replace(r#"\\"#, r#"\"#);
172 v_r = v_r.replace(r#"\""#, r#"""#);
173 v_r = v_r.replace("'", "''");
174 "N'".to_string() + &v_r + "',"
175 },
176 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
177 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
178 "&f32" | "&f64" | "&f128" | "&bool" => {
179 temp_v + ","
180 },
181 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
182 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
183 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
184 temp_v + ","
185 },
186 _ => {
187 "".to_string()
188 },
189 };
190 }
191
192 let tmp_s = match $m {
193 "set" => $k.to_string() + "=" + value.as_str(),
194 "incr" => {
195 let mut op = "+";
196 let first = &value.as_str()[0..1];
197 if first == "-" {
198 op = ""
199 }
200 $k.to_string() + "=" + $k + op + value.as_str()
201 },
202 "unset" => $k.to_string() + "=NULL,",
203 _ => $k.to_string() + "=" + value.as_str(),
204 };
205 if !is_option_none {
206 temp_s = temp_s + tmp_s.as_str();
207 }
208 )+
209
210 temp_s.pop();
211
212 let sql: String = "UPDATE ".to_string() + $t + " SET " + temp_s.as_str()
213 + " WHERE " + tmp_ik.as_str() + "=" + tmp_i.as_str();
214
215 sql
216 }
217 };
218
219 ($t:expr, {$ik:tt: $iv:expr}, {$($k:tt: $v:expr),+$(,)?}) => {
220 {
221 fn type_of<T>(_: T) -> &'static str {
222 std::any::type_name::<T>()
223 }
224 fn get_v_type(t: &'static str) -> &'static str {
225 match t {
226 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
227 t
228 },
229 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
230 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
231 "&f32" | "&f64" | "&f128" | "&bool" => {
232 t
233 },
234 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
235 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
236 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
237 t
238 },
239 "&core::option::Option<&str>" |
240 "&core::option::Option<alloc::string::String>" |
241 "&core::option::Option<&alloc::string::String>" => {
242 "&&str"
243 },
244 "&&core::option::Option<&str>" |
245 "&&core::option::Option<alloc::string::String>" |
246 "&&core::option::Option<&alloc::string::String>" => {
247 "&&str"
248 },
249 "&core::option::Option<u8>" |
250 "&core::option::Option<u16>" |
251 "&core::option::Option<u32>" |
252 "&core::option::Option<u64>" |
253 "&core::option::Option<u128>" |
254 "&core::option::Option<usize>" |
255 "&core::option::Option<i8>" |
256 "&core::option::Option<i16>" |
257 "&core::option::Option<i32>" |
258 "&core::option::Option<i64>" |
259 "&core::option::Option<i128>" |
260 "&core::option::Option<isize>" |
261 "&core::option::Option<f32>" |
262 "&core::option::Option<f64>" |
263 "&core::option::Option<f128>" |
264 "&core::option::Option<bool>" => {
265 "&u8"
266 },
267 "&&core::option::Option<u8>" |
268 "&&core::option::Option<u16>" |
269 "&&core::option::Option<u32>" |
270 "&&core::option::Option<u64>" |
271 "&&core::option::Option<u128>" |
272 "&&core::option::Option<usize>" |
273 "&&core::option::Option<i8>" |
274 "&&core::option::Option<i16>" |
275 "&&core::option::Option<i32>" |
276 "&&core::option::Option<i64>" |
277 "&&core::option::Option<i128>" |
278 "&&core::option::Option<isize>" |
279 "&&core::option::Option<f32>" |
280 "&&core::option::Option<f64>" |
281 "&&core::option::Option<f128>" |
282 "&&core::option::Option<bool>" => {
283 "&u8"
284 },
285 _ => {
286 "&&str"
287 },
288 }
289 }
290 let tmp_ik = $ik.to_string();
291 let i_data = $iv;
292 let i_type = type_of(&i_data);
293 let tmp_i = match i_type {
294 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
295 let mut v_r = i_data.to_string();
296 v_r = v_r.replace("'", "''");
297 "N'".to_string() + &v_r + "'"
298 },
299 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
300 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
301 "&f32" | "&f64" | "&f128" | "&bool" => {
302 i_data.to_string() + ""
303 },
304 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
305 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
306 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
307 i_data.to_string() + ""
308 },
309 _ => {
310 "".to_string()
311 },
312 };
313
314
315 let mut temp_s = String::from("");
316 $(
317 let temp_op = $v;
318 let op_v_type = type_of(&temp_op);
319 let mut temp_v: String;
320 let mut v_type = "&&str";
321 let mut is_option_none = false;
322 let value;
323 if op_v_type.contains("&core::option::Option") {
324 let op_str = format!("{:?}", temp_op);
325 if op_str == "None".to_string() {
326 temp_v = "null".to_string();
327 is_option_none = true;
328 } else {
329 let mut t = op_str.replace("Some(", "");
330 t.pop();
331 temp_v = t;
332 v_type = get_v_type(op_v_type)
333 }
334 } else {
335 temp_v = format!("{:?}", temp_op);
336 v_type = get_v_type(op_v_type)
337 }
338 if temp_v.as_str() == "null" || temp_v.as_str() == "\"null\"" {
339 value = "NULL,".to_string();
340 } else {
341 value = match v_type {
342 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
343 temp_v.remove(0);
344 temp_v.pop();
345 let mut v_r = temp_v.as_str().replace(r#"\\"#, r#"\"#);
346 v_r = v_r.replace(r#"\""#, r#"""#);
347 v_r = v_r.replace("'", "''");
348 "N'".to_string() + &v_r + "',"
349 },
350 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
351 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
352 "&f32" | "&f64" | "&f128" | "&bool" => {
353 temp_v + ","
354 },
355 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
356 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
357 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
358 temp_v + ","
359 },
360 _ => {
361 "".to_string()
362 },
363 };
364 }
365 let tmp_s = $k.to_string() + "=" + value.as_str();
366 if !is_option_none {
367 temp_s = temp_s + tmp_s.as_str();
368 }
369 )+
370
371 temp_s.pop();
372
373 let sql: String = "UPDATE ".to_string() + $t + " SET " + temp_s.as_str()
374 + " WHERE " + tmp_ik.as_str() + "=" + tmp_i.as_str();
375
376 sql
377 }
378 };
379
380 ($t:expr, $i:expr, {$($k:tt: [$m:tt, $v:expr]),+$(,)?}) => {
381 {
382 fn type_of<T>(_: T) -> &'static str {
383 std::any::type_name::<T>()
384 }
385 fn get_v_type(t: &'static str) -> &'static str {
386 match t {
387 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
388 t
389 },
390 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
391 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
392 "&f32" | "&f64" | "&f128" | "&bool" => {
393 t
394 },
395 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
396 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
397 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
398 t
399 },
400 "&core::option::Option<&str>" |
401 "&core::option::Option<alloc::string::String>" |
402 "&core::option::Option<&alloc::string::String>" => {
403 "&&str"
404 },
405 "&&core::option::Option<&str>" |
406 "&&core::option::Option<alloc::string::String>" |
407 "&&core::option::Option<&alloc::string::String>" => {
408 "&&str"
409 },
410 "&core::option::Option<u8>" |
411 "&core::option::Option<u16>" |
412 "&core::option::Option<u32>" |
413 "&core::option::Option<u64>" |
414 "&core::option::Option<u128>" |
415 "&core::option::Option<usize>" |
416 "&core::option::Option<i8>" |
417 "&core::option::Option<i16>" |
418 "&core::option::Option<i32>" |
419 "&core::option::Option<i64>" |
420 "&core::option::Option<i128>" |
421 "&core::option::Option<isize>" |
422 "&core::option::Option<f32>" |
423 "&core::option::Option<f64>" |
424 "&core::option::Option<f128>" |
425 "&core::option::Option<bool>" => {
426 "&u8"
427 },
428 "&&core::option::Option<u8>" |
429 "&&core::option::Option<u16>" |
430 "&&core::option::Option<u32>" |
431 "&&core::option::Option<u64>" |
432 "&&core::option::Option<u128>" |
433 "&&core::option::Option<usize>" |
434 "&&core::option::Option<i8>" |
435 "&&core::option::Option<i16>" |
436 "&&core::option::Option<i32>" |
437 "&&core::option::Option<i64>" |
438 "&&core::option::Option<i128>" |
439 "&&core::option::Option<isize>" |
440 "&&core::option::Option<f32>" |
441 "&&core::option::Option<f64>" |
442 "&&core::option::Option<f128>" |
443 "&&core::option::Option<bool>" => {
444 "&u8"
445 },
446 _ => {
447 "&&str"
448 },
449 }
450 }
451 let i_data = $i;
452 let i_type = type_of(&i_data);
453 let tmp_i = match i_type {
454 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
455 let mut v_r = i_data.to_string();
456 v_r = v_r.replace("'", "''");
457 "N'".to_string() + &v_r + "'"
458 },
459 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
460 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
461 "&f32" | "&f64" | "&f128" | "&bool" => {
462 i_data.to_string() + ""
463 },
464 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
465 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
466 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
467 i_data.to_string() + ""
468 },
469 _ => {
470 "".to_string()
471 },
472 };
473
474
475 let mut temp_s = String::from("");
476 $(
477 let temp_op = $v;
478 let op_v_type = type_of(&temp_op);
479 let mut temp_v: String;
480 let mut v_type = "&&str";
481 let mut is_option_none = false;
482 let value;
483 if op_v_type.contains("&core::option::Option") {
484 let op_str = format!("{:?}", temp_op);
485 if op_str == "None".to_string() {
486 temp_v = "null".to_string();
487 is_option_none = true;
488 } else {
489 let mut t = op_str.replace("Some(", "");
490 t.pop();
491 temp_v = t;
492 v_type = get_v_type(op_v_type)
493 }
494 } else {
495 temp_v = format!("{:?}", temp_op);
496 v_type = get_v_type(op_v_type)
497 }
498 if temp_v.as_str() == "null" || temp_v.as_str() == "\"null\"" {
499 value = "NULL,".to_string();
500 } else {
501 value = match v_type {
502 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
503 temp_v.remove(0);
504 temp_v.pop();
505 let mut v_r = temp_v.as_str().replace(r#"\\"#, r#"\"#);
506 v_r = v_r.replace(r#"\""#, r#"""#);
507 v_r = v_r.replace("'", "''");
508 "N'".to_string() + &v_r + "',"
509 },
510 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
511 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
512 "&f32" | "&f64" | "&f128" | "&bool" => {
513 temp_v + ","
514 },
515 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
516 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
517 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
518 temp_v + ","
519 },
520 _ => {
521 "".to_string()
522 },
523 };
524 }
525 let tmp_s = match $m {
526 "set" => $k.to_string() + "=" + value.as_str(),
527 "incr" => {
528 let mut op = "+";
529 let first = &value.as_str()[0..1];
530 if first == "-" {
531 op = ""
532 }
533 $k.to_string() + "=" + $k + op + value.as_str()
534 },
535 "unset" => $k.to_string() + "=NULL,",
536 _ => $k.to_string() + "=" + value.as_str(),
537 };
538 if !is_option_none {
539 temp_s = temp_s + tmp_s.as_str();
540 }
541 )+
542
543 temp_s.pop();
544
545 let sql: String = "UPDATE ".to_string() + $t + " SET " + temp_s.as_str()
546 + " WHERE id=" + tmp_i.as_str();
547
548 sql
549 }
550 };
551
552 ($t:expr, $i:expr, {$($k:tt: $v:expr),+$(,)?}) => {
553 {
554 fn type_of<T>(_: T) -> &'static str {
555 std::any::type_name::<T>()
556 }
557 fn get_v_type(t: &'static str) -> &'static str {
558 match t {
559 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
560 t
561 },
562 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
563 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
564 "&f32" | "&f64" | "&f128" | "&bool" => {
565 t
566 },
567 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
568 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
569 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
570 t
571 },
572 "&core::option::Option<&str>" |
573 "&core::option::Option<alloc::string::String>" |
574 "&core::option::Option<&alloc::string::String>" => {
575 "&&str"
576 },
577 "&&core::option::Option<&str>" |
578 "&&core::option::Option<alloc::string::String>" |
579 "&&core::option::Option<&alloc::string::String>" => {
580 "&&str"
581 },
582 "&core::option::Option<u8>" |
583 "&core::option::Option<u16>" |
584 "&core::option::Option<u32>" |
585 "&core::option::Option<u64>" |
586 "&core::option::Option<u128>" |
587 "&core::option::Option<usize>" |
588 "&core::option::Option<i8>" |
589 "&core::option::Option<i16>" |
590 "&core::option::Option<i32>" |
591 "&core::option::Option<i64>" |
592 "&core::option::Option<i128>" |
593 "&core::option::Option<isize>" |
594 "&core::option::Option<f32>" |
595 "&core::option::Option<f64>" |
596 "&core::option::Option<f128>" |
597 "&core::option::Option<bool>" => {
598 "&u8"
599 },
600 "&&core::option::Option<u8>" |
601 "&&core::option::Option<u16>" |
602 "&&core::option::Option<u32>" |
603 "&&core::option::Option<u64>" |
604 "&&core::option::Option<u128>" |
605 "&&core::option::Option<usize>" |
606 "&&core::option::Option<i8>" |
607 "&&core::option::Option<i16>" |
608 "&&core::option::Option<i32>" |
609 "&&core::option::Option<i64>" |
610 "&&core::option::Option<i128>" |
611 "&&core::option::Option<isize>" |
612 "&&core::option::Option<f32>" |
613 "&&core::option::Option<f64>" |
614 "&&core::option::Option<f128>" |
615 "&&core::option::Option<bool>" => {
616 "&u8"
617 },
618 _ => {
619 "&&str"
620 },
621 }
622 }
623 let i_data = $i;
624 let i_type = type_of(&i_data);
625 let tmp_i = match i_type {
626 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
627 let mut v_r = i_data.to_string();
628 v_r = v_r.replace("'", "''");
629 "N'".to_string() + &v_r + "'"
630 },
631 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
632 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
633 "&f32" | "&f64" | "&f128" | "&bool" => {
634 i_data.to_string() + ""
635 },
636 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
637 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
638 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
639 i_data.to_string() + ""
640 },
641 _ => {
642 "".to_string()
643 },
644 };
645
646
647 let mut temp_s = String::from("");
648 $(
649 let temp_op = $v;
650 let op_v_type = type_of(&temp_op);
651 let mut temp_v: String;
652 let mut v_type = "&&str";
653 let mut is_option_none = false;
654 let value;
655 if op_v_type.contains("&core::option::Option") {
656 let op_str = format!("{:?}", temp_op);
657 if op_str == "None".to_string() {
658 temp_v = "null".to_string();
659 is_option_none = true;
660 } else {
661 let mut t = op_str.replace("Some(", "");
662 t.pop();
663 temp_v = t;
664 v_type = get_v_type(op_v_type)
665 }
666 } else {
667 temp_v = format!("{:?}", temp_op);
668 v_type = get_v_type(op_v_type)
669 }
670 if temp_v.as_str() == "null" || temp_v.as_str() == "\"null\"" {
671 value = "NULL,".to_string();
672 } else {
673 value = match v_type {
674 "&&str" | "&alloc::string::String" | "&&alloc::string::String" => {
675 temp_v.remove(0);
676 temp_v.pop();
677 let mut v_r = temp_v.as_str().replace(r#"\\"#, r#"\"#);
678 v_r = v_r.replace(r#"\""#, r#"""#);
679 v_r = v_r.replace("'", "''");
680 "N'".to_string() + &v_r + "',"
681 },
682 "&u8" | "&u16" | "&u32" | "&u64" | "&u128" | "&usize" |
683 "&i8" | "&i16" | "&i32" | "&i64" | "&i128" | "&isize" |
684 "&f32" | "&f64" | "&f128" | "&bool" => {
685 temp_v + ","
686 },
687 "&&u8" | "&&u16" | "&&u32" | "&&u64" | "&&u128" | "&&usize" |
688 "&&i8" | "&&i16" | "&&i32" | "&&i64" | "&&i128" | "&&isize" |
689 "&&f32" | "&&f64" | "&&f128" | "&&bool" => {
690 temp_v + ","
691 },
692 _ => {
693 "".to_string()
694 },
695 };
696 }
697 let tmp_s = $k.to_string() + "=" + value.as_str();
698 if !is_option_none {
699 temp_s = temp_s + tmp_s.as_str();
700 }
701 )+
702
703 temp_s.pop();
704
705 let sql: String = "UPDATE ".to_string() + $t + " SET " + temp_s.as_str()
706 + " WHERE id=" + tmp_i.as_str();
707
708 sql
709 }
710 };
711}