use serde::{Deserialize, Serialize};
use super::post::ContentType;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PostGenerationJob {
pub id: String,
pub status: JobStatus,
pub content_type: ContentType,
pub source: JobSource,
pub created_at: String,
pub post_id: Option<String>,
pub error_message: Option<String>,
pub brand_identity_id: Option<String>,
pub brand_voice_id: Option<String>,
pub repository_ids: Option<Vec<String>>,
pub workflow_run_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BrandIdentityJob {
pub id: String,
pub status: JobStatus,
pub created_at: String,
pub completed_at: Option<String>,
pub current_step: Option<BrandIdentityStep>,
pub error_message: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum JobStatus {
Queued,
Running,
Completed,
Failed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum JobSource {
Api,
Dashboard,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum BrandIdentityStep {
Scraping,
Extracting,
Saving,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct JobEvent {
#[serde(rename = "type")]
pub event_type: String,
pub created_at: String,
}