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, #[builder(setter(into))] pub state: FangTaskState, #[builder(setter(into))] pub task_type: String, #[builder(setter(into))] pub uniq_hash: Option, #[builder(setter(into))] pub retries: i32, #[builder(setter(into))] pub scheduled_at: DateTime, #[builder(setter(into))] pub created_at: DateTime, #[builder(setter(into))] pub updated_at: DateTime, } #[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, #[builder(setter(into))] scheduled_at: DateTime, }