impl postgres pool conn
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
use crate::database::get_connection;
|
||||
use std::time::Duration;
|
||||
use std::{thread, time};
|
||||
|
||||
use super::{Runner, RunnerStatus, Storer};
|
||||
use crate::error::StorerError;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum JobAction {
|
||||
MegaportDeploy,
|
||||
MegaportUndeploy,
|
||||
MegaportCheckDeploy,
|
||||
MegaportCheckUndeploy,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Job {
|
||||
id: i32,
|
||||
action: JobAction,
|
||||
status: RunnerStatus,
|
||||
}
|
||||
|
||||
impl Job {
|
||||
pub fn new(id: i32, action: JobAction) -> Self {
|
||||
Self {
|
||||
id: id,
|
||||
action: action,
|
||||
status: RunnerStatus::Pending,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_status(&mut self, status: RunnerStatus) {
|
||||
self.status = status;
|
||||
}
|
||||
}
|
||||
|
||||
impl Runner for Job {
|
||||
fn run(&mut self) {
|
||||
self.set_status(RunnerStatus::Running);
|
||||
|
||||
match self.action {
|
||||
JobAction::MegaportDeploy => {
|
||||
println!("[job({:?})] deploying megaport...", self);
|
||||
}
|
||||
JobAction::MegaportUndeploy => {
|
||||
println!("[job({:?})] undeploying megaport...", self);
|
||||
}
|
||||
JobAction::MegaportCheckDeploy => {
|
||||
println!("[job({:?})] ckecking megaport deployment...", self);
|
||||
}
|
||||
JobAction::MegaportCheckUndeploy => {
|
||||
println!("[job({:?})] ckecking megaport undeployment...", self);
|
||||
}
|
||||
}
|
||||
|
||||
let wait = time::Duration::from_millis(1);
|
||||
thread::sleep(wait);
|
||||
|
||||
self.set_status(RunnerStatus::Success);
|
||||
}
|
||||
|
||||
fn set_status(&mut self, status: RunnerStatus) {
|
||||
self.status = status;
|
||||
}
|
||||
}
|
||||
|
||||
impl Storer for Job {
|
||||
fn insert(&self) -> Result<(), StorerError> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn save(&self) -> Result<(), StorerError> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn delete(&self) -> Result<(), StorerError> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
mod job;
|
||||
mod traits;
|
||||
|
||||
pub use job::{Job, JobAction};
|
||||
pub use traits::{Runner, RunnerStatus, Storer};
|
||||
@@ -0,0 +1,20 @@
|
||||
use crate::error::StorerError;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum RunnerStatus {
|
||||
Pending,
|
||||
Running,
|
||||
Failed,
|
||||
Success,
|
||||
}
|
||||
|
||||
pub trait Runner {
|
||||
fn run(&mut self);
|
||||
fn set_status(&mut self, status: RunnerStatus);
|
||||
}
|
||||
|
||||
pub trait Storer {
|
||||
fn insert(&self) -> Result<(), StorerError>;
|
||||
fn save(&self) -> Result<(), StorerError>;
|
||||
fn delete(&self) -> Result<(), StorerError>;
|
||||
}
|
||||
Reference in New Issue
Block a user