omni_orchestrator/schemas/v1/models/
provider.rs

1use serde::{Deserialize, Serialize};
2use chrono::{DateTime, NaiveDateTime, Utc};
3use super::region::Region;
4use serde_json::Value;
5use sqlx::Row;
6
7#[derive(Debug, sqlx::FromRow, Serialize)]
8pub struct Provider {
9    pub id: i64,
10    pub name: String,
11    pub display_name: String,
12    pub provider_type: String, // enum in DB: 'kubernetes' or 'custom'
13    pub status: String, // enum in DB: 'active', 'inactive', 'maintenance'
14    pub created_at: DateTime<Utc>,
15    pub updated_at: DateTime<Utc>,
16}
17
18#[derive(Debug, sqlx::FromRow, Serialize)]
19pub struct ProviderAuditLog {
20    pub id: i64,
21    pub provider_id: i64,
22    pub action: String,
23    pub details: Option<String>,
24    pub created_at: DateTime<Utc>,
25    pub updated_at: DateTime<Utc>,
26}
27
28/// List provider-regions.
29///
30/// This function fetches all regions from the database, paired with their providers and their binding table data.
31#[derive(sqlx::FromRow, Debug, Serialize)]
32pub struct ProviderRegion {
33    #[sqlx(flatten)]
34    region: Region,
35    provider_name: String,
36    binding_status: String,
37}