kue 0.1.0

Kue is a job queue backed by pg/memory/redis
Documentation
use crate::{KueAdapter, KueError};

use super::{TNResult, TNTask};

#[derive(Debug, PartialEq)]
pub struct TNAdapter {
  pub result: i32,
  pub current: i32,
  pub iterations: i32
}

impl TNAdapter {
  pub fn new(iterations: i32) -> Self { 
    Self { result: 0, current: 1, iterations } 
  }
}

impl KueAdapter<TNResult, TNTask> for TNAdapter {
  fn get_task(&mut self) -> Result<Option<TNTask>, KueError> {
    if self.iterations == 0 {
      return Ok(None);
    }

    let task = TNTask::new(self.result, self.current);
    self.iterations -= 1;
    self.current += 1;

    Ok(Some(task))
  }

  fn register_result(
    &mut self, 
    _: &TNTask, 
    result: &Result<TNResult, KueError>
  ) -> Result<(), KueError> {
    match result {
      Ok(r) => { 
        self.result = *r;
        Ok(())
      },
      Err(e) => Err(e.clone())
    }
  }
}