sqlink/postgres/
query_order.rs1use crate::error::Error;
2
3#[derive(Clone, Debug)]
4pub struct QueryOrders(Vec<QueryOrder>);
5
6impl Default for QueryOrders {
7 fn default() -> Self {
8 QueryOrders(Vec::new())
9 }
10}
11
12impl QueryOrders {
13 pub fn build(&self) -> Result<String, Error> {
14 Ok(self.0.clone().into_iter().map(|s| s.build()).collect::<Vec<String>>().join(", "))
15 }
16 pub fn push(&mut self, field: QueryOrder) {
17 self.0.push(field);
18 }
19 pub fn len(&self) -> usize {
20 self.0.len()
21 }
22}
23
24#[derive(Clone, Debug)]
25pub struct QueryOrder {
26 pub name: String, }
28
29impl QueryOrder {
30 fn build(&self) -> String {
31 self.name.clone()
32 }
33}
34
35#[cfg(test)]
36mod tests {
37 use super::*;
38 #[test]
39 fn test_order_1() {
40 let field: QueryOrder = QueryOrder {
41 name: "u.id ASC".to_owned(),
42 };
43
44 assert_eq!(field.build(), "u.id ASC");
45 }
46}