use core_domain::Timestamp;
use core_domain::{RefLink, WorkspaceId};

#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CommandLogStatus {
    Pending,
    Succeeded,
    Failed,
    RolledBack,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CommandLogRecord {
    pub command_log_id: String,
    pub command_name: String,
    pub actor_type: String,
    pub actor_id: String,
    pub source: String,
    pub workspace_id: WorkspaceId,
    pub target_objects: Vec<RefLink>,
    pub payload_summary: String,
    pub refs_json: String,
    pub idempotency_key: Option<String>,
    pub status: CommandLogStatus,
    pub created_at: Timestamp,
    pub finished_at: Option<Timestamp>,
    pub trace_id: String,
    pub request_id: String,
}
