rust-distributed-id 0.1.3

Rust version of the Twitter snowflake algorithm.
Documentation
use rbatis::crud::{CRUD};
use rbatis::rbatis::Rbatis;

use crate::worker::model::worker_node;
use rbatis::Error;

pub struct WorkerDao {
    rb: & 'static Rbatis,
}

impl WorkerDao {
    pub fn new(rb: & 'static Rbatis) -> Self {
        WorkerDao {
            rb
        }
    }

    pub async fn save(&self, w: worker_node::WorkerNode) -> Result<i64, Error> {
        let save_res = self.rb.save(&w, &[]).await;
        if let Ok(res) = save_res {
            let affect_row = res.rows_affected;
            if affect_row > 0 {
                return Ok(res.last_insert_id.unwrap());
            }

            return Ok(0);
        }

        Err(save_res.unwrap_err())
    }

    pub async fn get_by_hostname(&self, host_name: &String) -> Result<worker_node::WorkerNode, Error> {
        let w = self.rb.new_wrapper().eq("host_name", host_name);
        let item_res = self.rb.fetch_by_wrapper::<worker_node::WorkerNode>(w).await;
        if let Ok(res) = item_res {
            return Ok(res);
        }

        Err(item_res.unwrap_err())
    }
}