chuchi_postgres/row/
to.rs1#[doc(hidden)]
3pub use postgres_types::ToSql;
4
5pub trait ToRowStatic {
6 fn insert_columns() -> &'static str;
8 fn insert_values() -> &'static str;
10 fn update_columns() -> &'static str;
12
13 fn params_len() -> usize;
14 fn params(&self) -> impl ExactSizeIterator<Item = &(dyn ToSql + Sync)>;
15}
16
17pub trait ToRow {
18 fn insert_columns(&self, s: &mut String);
20 fn insert_values(&self, s: &mut String);
22 fn update_columns(&self, s: &mut String);
24
25 fn params_len(&self) -> usize;
26 fn params(&self) -> impl ExactSizeIterator<Item = &(dyn ToSql + Sync)>;
27}
28
29impl<S> ToRow for S
30where
31 S: ToRowStatic,
32{
33 fn insert_columns(&self, s: &mut String) {
34 s.push_str(S::insert_columns());
35 }
36
37 fn insert_values(&self, s: &mut String) {
38 s.push_str(S::insert_values());
39 }
40
41 fn update_columns(&self, s: &mut String) {
42 s.push_str(S::update_columns());
43 }
44
45 fn params_len(&self) -> usize {
46 S::params_len()
47 }
48
49 fn params(&self) -> impl ExactSizeIterator<Item = &(dyn ToSql + Sync)> {
50 S::params(self)
51 }
52}