Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[derive(Debug)]
- struct Table {
- table: String,
- }
- impl Table {
- pub fn new(table: String) -> Self {
- Table{table: table}
- }
- pub fn select(self) -> SelectQuery {
- SelectQuery::new(self)
- }
- }
- #[derive(Debug)]
- struct SelectQuery {
- table: Table,
- limit: Option<i64>,
- offset: Option<i64>,
- }
- impl SelectQuery {
- pub fn new(table: Table) -> Self {
- SelectQuery{table: table, limit: None, offset: None}
- }
- pub fn limit(&mut self, limit: i64) -> &mut Self {
- self.limit = Some(limit);
- self
- }
- pub fn offset(&mut self, offset: i64) -> &mut Self {
- self.offset = Some(offset);
- self
- }
- pub fn query(&self) -> String {
- let mut query = format!("SELECT * FROM {}", self.table.table);
- if let Some(limit) = self.limit {
- query.push_str(&format!(" LIMIT {}", limit));
- }
- if let Some(offset) = self.offset {
- query.push_str(&format!(" OFFSET {}", offset));
- }
- query.push_str(";");
- query
- }
- }
- fn main() {
- let table = Table::new("mytable".to_string());
- let mut s = table.select();
- s.offset(50).limit(50);
- println!("{:?}", s);
- println!("{}", s.query());
- }
Add Comment
Please, Sign In to add comment