use std::collections::HashMap;
use chrono::{DateTime, Utc};
use serde_json::Value;
#[derive(Debug, Clone)]
pub struct Database {
pub database_name: String,
pub arn: String,
pub kms_key_id: Option<String>,
pub table_count: i64,
pub creation_time: DateTime<Utc>,
pub last_updated_time: DateTime<Utc>,
pub tags: HashMap<String, String>,
}
#[derive(Debug, Clone)]
pub struct Table {
pub table_name: String,
pub database_name: String,
pub arn: String,
pub table_status: String,
pub retention_properties: RetentionProperties,
pub magnetic_store_write_properties: MagneticStoreWriteProperties,
pub creation_time: DateTime<Utc>,
pub last_updated_time: DateTime<Utc>,
pub tags: HashMap<String, String>,
pub records: Vec<Record>,
}
#[derive(Debug, Clone)]
pub struct RetentionProperties {
pub memory_store_retention_period_in_hours: i64,
pub magnetic_store_retention_period_in_days: i64,
}
impl Default for RetentionProperties {
fn default() -> Self {
Self {
memory_store_retention_period_in_hours: 6,
magnetic_store_retention_period_in_days: 73000,
}
}
}
#[derive(Debug, Clone, Default)]
pub struct MagneticStoreWriteProperties {
pub enable_magnetic_store_writes: bool,
}
#[derive(Debug, Clone)]
pub struct Record {
pub dimensions: Vec<Dimension>,
pub measure_name: Option<String>,
pub measure_value: Option<String>,
pub measure_value_type: Option<String>,
pub time: Option<String>,
pub time_unit: Option<String>,
}
#[derive(Debug, Clone)]
pub struct Dimension {
pub name: String,
pub value: String,
pub dimension_value_type: Option<String>,
}
#[derive(Debug, Clone)]
pub struct BatchLoadTask {
pub task_id: String,
pub task_status: String,
pub database_name: String,
pub table_name: String,
pub data_source_configuration: Value,
pub report_configuration: Value,
pub data_model_configuration: Option<Value>,
pub creation_time: DateTime<Utc>,
pub last_updated_time: DateTime<Utc>,
pub error_message: Option<String>,
}