1use serde::{Deserialize, Serialize};
2use uuid::Uuid;
3use chrono::{DateTime, Utc};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct TestRun {
7 pub id: Uuid,
8 pub name: String,
9 pub image: String,
10 pub commands: Vec<String>,
11 pub status: String,
12 pub created_at: DateTime<Utc>,
13 pub definition_id: Option<Uuid>,
14 pub executor_id: Option<String>,
15 pub suite_id: Option<Uuid>,
16 pub variables: Option<serde_json::Value>,
17 pub artifacts: Option<Vec<String>>,
18 pub duration: Option<i32>,
19 pub retries: Option<i32>,
20 pub logs: Option<Vec<String>>,
21 pub k8s_job_name: Option<String>,
22 pub pod_scheduled: Option<DateTime<Utc>>,
23 pub container_created: Option<DateTime<Utc>>,
24 pub container_started: Option<DateTime<Utc>>,
25 pub completed: Option<DateTime<Utc>>,
26 pub failed: Option<DateTime<Utc>>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct TestDefinition {
31 pub id: Uuid,
32 pub name: String,
33 pub description: String,
34 pub image: String,
35 pub commands: Vec<String>,
36 pub created_at: DateTime<Utc>,
37 pub executor_id: Option<String>,
38 pub variables: Option<serde_json::Value>,
39 pub labels: Option<Vec<String>>,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct Executor {
44 pub id: String,
45 pub name: String,
46 pub image: String,
47 pub description: Option<String>,
48 pub command: Option<Vec<String>>,
49 pub supported_file_types: Option<Vec<String>>,
50 pub env: Option<serde_json::Value>,
51 pub created_at: DateTime<Utc>,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct TestSuite {
56 pub id: Uuid,
57 pub name: String,
58 pub description: String,
59 pub test_definition_ids: Vec<Uuid>,
60 pub created_at: DateTime<Utc>,
61 pub execution_mode: String,
62 pub labels: Option<Vec<String>>,
63}