52 lines
1.4 KiB
Rust
52 lines
1.4 KiB
Rust
use crate::fang_task_state::FangTaskState;
|
|
use crate::schema::fang_tasks;
|
|
use chrono::DateTime;
|
|
use chrono::Duration;
|
|
use chrono::Utc;
|
|
use cron::Schedule;
|
|
use diesel::prelude::*;
|
|
use sha2::{Digest, Sha256};
|
|
use thiserror::Error;
|
|
use typed_builder::TypedBuilder;
|
|
use uuid::Uuid;
|
|
|
|
pub const DEFAULT_TASK_TYPE: &str = "common";
|
|
|
|
#[derive(Queryable, Identifiable, Debug, Eq, PartialEq, Clone, TypedBuilder)]
|
|
#[diesel(table_name = fang_tasks)]
|
|
pub struct Task {
|
|
#[builder(setter(into))]
|
|
pub id: Uuid,
|
|
#[builder(setter(into))]
|
|
pub metadata: serde_json::Value,
|
|
#[builder(setter(into))]
|
|
pub error_message: Option<String>,
|
|
#[builder(setter(into))]
|
|
pub state: FangTaskState,
|
|
#[builder(setter(into))]
|
|
pub task_type: String,
|
|
#[builder(setter(into))]
|
|
pub uniq_hash: Option<String>,
|
|
#[builder(setter(into))]
|
|
pub retries: i32,
|
|
#[builder(setter(into))]
|
|
pub scheduled_at: DateTime<Utc>,
|
|
#[builder(setter(into))]
|
|
pub created_at: DateTime<Utc>,
|
|
#[builder(setter(into))]
|
|
pub updated_at: DateTime<Utc>,
|
|
}
|
|
|
|
#[derive(Insertable, Debug, Eq, PartialEq, Clone, TypedBuilder)]
|
|
#[diesel(table_name = fang_tasks)]
|
|
pub struct NewTask {
|
|
#[builder(setter(into))]
|
|
metadata: serde_json::Value,
|
|
#[builder(setter(into))]
|
|
task_type: String,
|
|
#[builder(setter(into))]
|
|
uniq_hash: Option<String>,
|
|
#[builder(setter(into))]
|
|
scheduled_at: DateTime<Utc>,
|
|
}
|