db_v1_tables - OmniCloudOrg/OmniOrchestrator GitHub Wiki
Path: src/db/v1/tables.rs
- struct User
- struct UserMeta
- struct UserPii
- struct UserSession
- struct App
- struct AppWithInstanceCount
- struct AppWithInstances
- struct Org
- struct Region
- struct Provider
- struct ProviderAuditLog
- struct ProviderRegion
- struct Role
- struct Permission
- struct Build
- struct Metric
- struct Deployment
- struct Instance
- struct StorageClass
- struct StorageVolume
- struct StorageSnapshot
- struct StorageMigration
- struct StorageQosPolicy
- struct VolumeQosPolicyAssignment
- struct UserNotification
- struct RoleNotification
- struct NotificationAcknowledgment
- struct Alert
- struct AlertAcknowledgment
- struct AlertEscalation
- struct AlertWithRelatedData
- struct AlertWithAcknowledgments
- struct AlertHistory
- struct AuditLog
- enum WorkerStatus
- struct Worker
- struct Notification
- struct NotificationWithCount
- struct UserNotificationWithRoleNotifications
- struct Backup
- struct ResourceType
- struct CostMetric
- struct CostMetricWithType
- struct CostBudget
- struct CostProjection
- struct ResourcePricing
- struct CostAllocationTag
pub struct User {
pub id: i64,
pub email: String,
pub email_verified: i8,
pub password: String,
pub salt: String,
pub login_attempts: i64,
pub active: bool,
pub status: String,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub last_login_at: Option<DateTime<Utc>>,
}
pub struct UserMeta {
pub id: i64,
pub user_id: i64,
pub timezone: Option<String>,
pub language: Option<String>,
pub theme: Option<String>,
pub notification_preferences: Option<serde_json::Value>,
pub profile_image: Option<String>,
pub dashboard_layout: Option<serde_json::Value>,
pub onboarding_completed: i8,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
pub struct UserPii {
pub id: i64,
pub user_id: i64,
pub first_name: Option<String>,
pub last_name: Option<String>,
pub full_name: Option<String>,
pub identity_verified: i8,
pub identity_verification_date: Option<DateTime<Utc>>,
pub identity_verification_method: Option<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
pub struct UserSession {
pub id: i64,
pub user_id: i64,
pub session_token: String,
pub refresh_token: Option<String>,
pub ip_address: Option<String>,
pub user_agent: Option<String>,
pub device_info: Option<serde_json::Value>,
pub location_info: Option<serde_json::Value>,
pub is_active: i8,
pub last_activity: Option<DateTime<Utc>>,
pub expires_at: DateTime<Utc>,
pub created_at: DateTime<Utc>,
}
pub struct App {
pub id: i64,
pub name: String,
pub org_id: i64,
pub git_repo: Option<String>,
pub region_id: Option<i64>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub git_branch: Option<String>,
pub maintenance_mode: bool,
pub container_image_url: Option<String>,
}
pub struct AppWithInstanceCount {
#[serde(flatten)]
app_data: App,
instance_count: i64,
}
pub struct AppWithInstances {
#[serde(flatten)]
pub app: App,
pub instances: Vec<Instance>,
}
pub struct Org {
pub id: i64,
pub name: String,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
pub struct Region {
pub id: i64,
pub name: String,
pub provider: i64, // enum in DB: 'kubernetes' or 'custom'
pub created_at: DateTime<Utc>,
}
pub struct Provider {
pub id: i64,
pub name: String,
pub display_name: String,
pub provider_type: String, // enum in DB: 'kubernetes' or 'custom'
pub status: String, // enum in DB: 'active', 'inactive', 'maintenance'
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
pub struct ProviderAuditLog {
pub id: i64,
pub provider_id: i64,
pub action: String,
pub details: Option<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
pub struct ProviderRegion {
#[sqlx(flatten)]
region: Region,
provider_name: String,
binding_status: String,
}
List provider-regions. This function fetches all regions from the database, paired with their providers and their binding table data.
pub struct Role {
pub id: i64,
pub name: String,
pub created_at: DateTime<Utc>,
pub description: Option<String>,
}
pub struct Permission {
pub id: i64,
pub name: String,
pub created_at: DateTime<Utc>,
pub description: Option<String>,
pub resource_type: Option<String>,
}
pub struct Build {
pub id: i64,
pub app_id: i64,
pub source_version: Option<String>,
pub commit_sha: Option<String>,
pub commit_message: Option<String>,
pub author: Option<String>,
pub status: String, // enum: 'pending', 'building', 'succeeded', 'failed', 'canceled'
pub build_pack_used: Option<String>,
pub build_pack_url: Option<String>,
pub build_pack_version: Option<String>,
pub build_image: Option<String>,
pub build_arguments: Option<serde_json::Value>,
pub build_environment: Option<serde_json::Value>,
pub build_cache_key: Option<String>,
pub log_url: Option<String>,
pub artifact_url: Option<String>,
pub artifact_checksum: Option<String>,
pub artifact_size: Option<i64>,
pub error_message: Option<String>,
pub started_at: Option<DateTime<Utc>>,
pub completed_at: Option<DateTime<Utc>>,
pub build_duration: Option<i32>, // in seconds
pub created_at: DateTime<Utc>,
}
pub struct Metric {
pub id: i64,
pub app_id: Option<i64>,
pub metric_name: String,
pub metric_value: f64,
pub labels: Option<JsonValue>,
pub timestamp: Option<NaiveDateTime>,
}
pub struct Deployment {
pub id: i64,
pub status: String, // enum: 'pending', 'in_progress', 'deployed', 'failed'
pub app_id: i64,
pub build_id: i64,
pub created_at: DateTime<Utc>,
pub started_at: Option<DateTime<Utc>>,
pub completed_at: Option<DateTime<Utc>>,
}
pub struct Instance {
pub id: i64,
pub app_id: i64,
pub instance_type: String,
pub guid: String,
pub status: String, // enum: 'running', 'starting', 'stopping', 'stopped', 'crashed', 'terminated', 'unknown'
pub region_id: i64,
pub container_id: Option<String>,
pub container_ip: Option<String>,
pub allocation_id: Option<i64>,
pub node_id: Option<i64>,
pub instance_index: i32,
pub last_health_check: Option<DateTime<Utc>>,
pub health_status: String, // enum: 'healthy', 'unhealthy', 'unknown'
pub cpu_usage: Option<f64>,
pub memory_usage: Option<f64>,
pub disk_usage: Option<f64>,
pub uptime: Option<i32>,
pub restart_count: Option<i32>,
pub last_restart_reason: Option<String>,
pub start_time: Option<DateTime<Utc>>,
pub stop_time: Option<DateTime<Utc>>,
pub exit_code: Option<i32>,
pub exit_reason: Option<String>,
pub scheduler_metadata: Option<serde_json::Value>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
pub struct StorageClass {
pub id: i64,
pub name: String,
pub provisioner: String,
pub reclaim_policy: String, // enum: 'Delete', 'Retain' TODO: @tristanpoland add recycle
pub volume_binding_mode: String, // enum: 'Immediate', 'WaitForFirstConsumer'
pub allow_volume_expansion: bool,
pub storage_type: String, // 'local-disk', 'local-resilient', 'distributed', 'geo-replicated'
pub default_filesystem: String, // enum: 'ext4', 'xfs', 'btrfs', 'zfs'
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
pub struct StorageVolume {
pub id: i64,
pub app_id: i64,
pub name: String,
pub size_gb: i64,
pub storage_class: String,
pub access_mode: String, // enum: 'ReadWriteOnce', 'ReadOnlyMany', 'ReadWriteMany'
pub status: String, // enum: 'Provisioned', 'Bound', 'Mounted', 'Released', 'Deleting', 'Deleted'
pub node_id: i64,
pub encryption_enabled: bool,
pub persistence_level: String, // enum: 'Basic', 'Enhanced', 'High', 'Maximum'
pub write_concern: String, // enum: 'WriteAcknowledged', 'WriteDurable', 'WriteReplicated', 'WriteDistributed'
pub reclaim_policy: String, // enum: 'Delete', 'Retain'
pub filesystem_type: Option<String>,
pub storage_class_id: i64,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
pub snapshot_id: Option<i64>,
pub mount_path: Option<String>,
}
pub struct StorageSnapshot {
pub id: i64,
pub volume_id: i64,
pub name: String,
pub size_gb: i64,
pub created_at: DateTime<Utc>,
pub status: String, // enum: 'Creating', 'Available', 'Deleting', 'Deleted'
pub description: Option<String>,
pub retention_date: Option<DateTime<Utc>>,
}
pub struct StorageMigration {
pub id: i64,
pub source_volume_id: i64,
pub destination_volume_id: i64,
pub migration_type: String, // enum: 'StorageClass', 'Node', 'Zone', 'Environment'
pub status: String, // enum: 'Pending', 'Copying', 'Syncing', 'ReadyForCutover', 'Completed', 'Failed'
pub progress_percent: i32,
pub started_at: DateTime<Utc>,
pub completed_at: Option<DateTime<Utc>>,
pub is_online: bool,
pub error_message: Option<String>,
pub created_by: String,
}
pub struct StorageQosPolicy {
pub id: i64,
pub name: String,
pub max_iops: Option<i32>,
pub max_throughput_mbps: Option<i32>,
pub burst_iops: Option<i32>,
pub burst_duration_seconds: Option<i32>,
pub latency_target_ms: Option<i32>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>
}
pub struct VolumeQosPolicyAssignment {
pub volume_id: i64,
pub policy_id: i64,
pub assigned_at: DateTime<Utc>
}
pub struct UserNotification {
pub id: i64,
pub user_id: i64,
pub org_id: Option<i64>,
pub app_id: Option<i64>,
pub notification_type: String,
pub message: String,
pub read_status: bool,
pub importance: String,
pub action_url: Option<String>,
pub action_label: Option<String>,
pub created_at: DateTime<Utc>,
pub expires_at: Option<DateTime<Utc>>,
}
pub struct RoleNotification {
pub id: i64,
pub role_id: i64,
pub org_id: Option<i64>,
pub app_id: Option<i64>,
pub notification_type: String,
pub message: String,
pub importance: String,
pub action_url: Option<String>,
pub action_label: Option<String>,
pub created_at: DateTime<Utc>,
pub expires_at: Option<DateTime<Utc>>,
}
pub struct NotificationAcknowledgment {
pub id: i64,
pub user_id: i64,
pub notification_id: Option<i64>,
pub role_notification_id: Option<i64>,
pub acknowledged_at: DateTime<Utc>
}
pub struct Alert {
pub id: i64,
pub alert_type: String,
pub severity: String,
pub service: String,
pub message: String,
pub timestamp: DateTime<Utc>,
pub status: String,
pub resolved_at: Option<DateTime<Utc>>,
pub resolved_by: Option<i64>,
pub metadata: Option<Json<HashMap<String, serde_json::Value>>>,
pub org_id: Option<i64>,
pub app_id: Option<i64>,
pub instance_id: Option<i64>,
pub region_id: Option<i64>,
pub node_id: Option<i64>,
}
pub struct AlertAcknowledgment {
pub id: i64,
pub alert_id: i64,
pub user_id: i64,
pub acknowledged_at: DateTime<Utc>,
pub notes: Option<String>,
}
pub struct AlertEscalation {
pub id: i64,
pub alert_id: i64,
pub escalation_level: i64,
pub escalated_at: DateTime<Utc>,
pub escalated_to: Json<serde_json::Value>,
pub escalation_method: String,
pub response_required_by: Option<DateTime<Utc>>,
}
pub struct AlertWithRelatedData {
/// The core alert data
pub alert: Alert,
/// List of all acknowledgments for this alert
pub acknowledgments: Vec<AlertAcknowledgment>,
/// List of all escalations for this alert
pub escalations: Vec<AlertEscalation>,
/// History of all actions taken on this alert
pub history: Vec<AlertHistory>
}
Represents an alert with all its related data (acknowledgments, escalations, and history). This comprehensive view is useful for detailed alert pages.
pub struct AlertWithAcknowledgments {
/// The core alert data
pub alert: Alert,
/// List of acknowledgments for this alert
pub acknowledgments: Vec<AlertAcknowledgment>,
/// Whether the alert has been acknowledged
pub is_acknowledged: bool,
/// Total number of acknowledgments
pub acknowledgment_count: i64,
/// Timestamp of the most recent acknowledgment, if any
pub latest_acknowledgment: Option<chrono::DateTime<chrono::Utc>>,
}
Represents an alert with its acknowledgment information. This is useful for displaying alerts with their acknowledgment status.
pub struct AlertHistory {
pub id: i64,
pub alert_id: i64,
pub action: String,
pub performed_by: Option<i64>,
pub performed_at: DateTime<Utc>,
pub previous_state: Option<Json<serde_json::Value>>,
pub new_state: Option<Json<serde_json::Value>>,
pub notes: Option<String>,
}
pub struct AuditLog {
pub id: i64,
pub org_id: Option<i64>,
pub action: String,
pub user_id: Option<i64>,
pub created_at: DateTime<Utc>,
pub resource_id: Option<String>,
pub resource_type: String,
}
pub enum WorkerStatus {
Active,
Provisioning,
Maintenance,
PoweredOff,
Unreachable,
Degraded,
Decommissioning,
}
pub struct Worker {
pub id: Option<i64>,
pub region_id: i64,
pub name: String,
pub provider_id: Option<String>,
pub instance_type: Option<String>,
pub status: String,
pub cpu_total: f64,
pub cpu_available: f64,
#[serde(default)]
pub cpu_reserved: f64,
pub memory_total: f64, // in MB
pub memory_available: f64, // in MB
#[serde(default)]
pub memory_reserved: f64, // in MB
pub disk_total: f64, // in MB
pub disk_available: f64, // in MB
#[serde(default)]
pub disk_reserved: f64, // in MB
pub network_in_capacity: Option<f64>, // in Mbps
pub network_out_capacity: Option<f64>, // in Mbps
pub docker_version: Option<String>,
pub ssh_address: Option<String>,
#[serde(default = "default_ssh_port")]
pub ssh_port: i32,
pub ssh_user: Option<String>,
pub ssh_key: Option<String>,
pub labels: Option<Json<serde_json::Value>>,
pub taints: Option<Json<serde_json::Value>>,
pub annotations: Option<Json<serde_json::Value>>,
pub last_heartbeat: Option<DateTime<Utc>>,
pub created_at: Option<DateTime<Utc>>,
pub updated_at: Option<DateTime<Utc>>,
}
pub struct Notification {
pub id: i64,
pub user_id: Option<i64>,
pub org_id: Option<i64>,
pub app_id: Option<i64>,
pub notification_type: String, // enum: 'info', 'warning', 'error', 'success'
pub message: String,
pub read_status: bool,
pub created_at: DateTime<Utc>,
}
pub struct NotificationWithCount {
/// Direct notifications for the user
pub user_notifications: Vec<UserNotification>,
/// Role-based notifications applicable to the user
pub role_notifications: Vec<RoleNotification>,
/// User's acknowledgments of role notifications
pub acknowledgments: Vec<NotificationAcknowledgment>,
/// Count of unread direct user notifications
pub unread_user_count: i64,
/// Count of unacknowledged role notifications
pub unacknowledged_role_count: i64,
/// Total count of unread notifications (user + role)
pub total_unread_count: i64
}
Represents a comprehensive view of a user's notifications with unread counts. This is useful for providing notification center overviews.
pub struct UserNotificationWithRoleNotifications {
/// Direct notifications for the user
pub user_notifications: Vec<UserNotification>,
/// Role-based notifications applicable to the user
pub role_notifications: Vec<RoleNotification>,
/// User's acknowledgments of role notifications
pub acknowledgments: Vec<NotificationAcknowledgment>
}
Represents a user's notifications including those from their roles. This combines personal notifications with role-based ones.
pub struct Backup {
pub id: i64,
pub name: String,
pub description: Option<String>,
pub created_at: DateTime<Utc>,
pub created_by: String,
pub backup_type: String, // enum: 'PLATFORM', 'APPLICATION', 'PARTIAL'
pub status: String, // enum: 'CREATING', 'AVAILABLE', 'RESTORING', 'FAILED', 'DELETED'
pub format_version: String,
pub source_environment: String,
pub encryption_method: Option<String>,
pub encryption_key_id: Option<i64>,
pub size_bytes: Option<i64>,
pub has_system_core: bool,
pub has_directors: bool,
pub has_orchestrators: bool,
pub has_network_config: bool,
pub has_app_definitions: bool,
pub has_volume_data: bool,
pub included_apps: Option<String>,
pub included_services: Option<String>,
pub last_validated_at: Option<DateTime<Utc>>,
pub last_restored_at: Option<DateTime<Utc>>,
pub restore_target_environment: Option<String>,
pub restore_status: Option<String>,
pub storage_location: String,
pub manifest_path: String,
pub metadata: Option<Value>,
}
pub struct ResourceType {
/// Unique identifier
pub id: i32,
/// Name of the resource type (e.g., 'cpu_usage', 'memory_usage')
pub name: String,
/// Category of the resource (e.g., 'compute', 'storage', 'network')
pub category: String,
/// Unit of measurement (e.g., 'vCPU-hour', 'GB-month')
pub unit_of_measurement: String,
/// Optional description of the resource type
pub description: Option<String>,
/// Creation timestamp
pub created_at: DateTime<Utc>,
/// Last update timestamp
pub updated_at: DateTime<Utc>,
}
Represents a resource type in the system.
pub struct CostMetric {
/// Unique identifier
pub id: i64,
/// Resource type ID
pub resource_type_id: i32,
/// Provider ID
pub provider_id: Option<i64>,
/// Region ID
pub region_id: Option<i64>,
/// Application ID
pub app_id: Option<i64>,
/// Worker ID
pub worker_id: Option<i64>,
/// Organization ID
pub org_id: Option<i64>,
/// Start time of the usage period
pub start_time: DateTime<Utc>,
/// End time of the usage period
pub end_time: DateTime<Utc>,
/// Amount of resource used
pub usage_quantity: f64,
/// Cost per unit
pub unit_cost: f64,
/// Currency code (e.g., 'USD')
pub currency: String,
/// Total cost for this usage
pub total_cost: f64,
/// Discount percentage applied
pub discount_percentage: Option<f64>,
/// Reason for the discount
pub discount_reason: Option<String>,
/// Billing period (e.g., '2025-05')
pub billing_period: Option<String>,
/// Creation timestamp
pub created_at: DateTime<Utc>,
/// Last update timestamp
pub updated_at: DateTime<Utc>,
}
Represents a cost metric entry in the system.
pub struct CostMetricWithType {
/// Unique identifier
pub id: i64,
/// Resource type ID
pub resource_type_id: i32,
/// Provider ID
pub provider_id: Option<i64>,
/// Region ID
pub region_id: Option<i64>,
/// Application ID
pub app_id: Option<i64>,
/// Worker ID
pub worker_id: Option<i64>,
/// Organization ID
pub org_id: Option<i64>,
/// Start time of the usage period
pub start_time: DateTime<Utc>,
/// End time of the usage period
pub end_time: DateTime<Utc>,
/// Amount of resource used
pub usage_quantity: f64,
/// Cost per unit
pub unit_cost: f64,
/// Currency code (e.g., 'USD')
pub currency: String,
/// Total cost for this usage
pub total_cost: f64,
/// Discount percentage applied
pub discount_percentage: Option<f64>,
/// Reason for the discount
pub discount_reason: Option<String>,
/// Billing period (e.g., '2025-05')
pub billing_period: Option<String>,
/// Creation timestamp
pub created_at: DateTime<Utc>,
/// Last update timestamp
pub updated_at: DateTime<Utc>,
/// Resource type name
pub resource_type_name: String,
/// Resource type category
pub resource_type_category: String,
/// Unit of measurement
pub unit_of_measurement: String,
}
Represents a cost metric with its associated resource type information.
pub struct CostBudget {
/// Unique identifier
pub id: i64,
/// Organization ID
pub org_id: i64,
/// Application ID (optional)
pub app_id: Option<i64>,
/// Budget name
pub budget_name: String,
/// Budget amount
pub budget_amount: f64,
/// Currency code (e.g., 'USD')
pub currency: String,
/// Budget period type
pub budget_period: String,
/// Start date of the budget period
pub period_start: DateTime<Utc>,
/// End date of the budget period
pub period_end: DateTime<Utc>,
/// Alert threshold percentage
pub alert_threshold_percentage: f64,
/// Contacts to alert when threshold is reached (JSON)
pub alert_contacts: String,
/// Whether the budget is active
pub is_active: bool,
/// Creation timestamp
pub created_at: DateTime<Utc>,
/// Last update timestamp
pub updated_at: DateTime<Utc>,
/// User ID who created the budget
pub created_by: i64,
}
Represents a cost budget entry in the system.
pub struct CostProjection {
/// Unique identifier
pub id: i64,
/// Organization ID
pub org_id: i64,
/// Application ID (optional)
pub app_id: Option<i64>,
/// Projection period type (e.g., 'monthly', 'quarterly')
pub projection_period: String,
/// Start date of the projection period
pub start_date: DateTime<Utc>,
/// End date of the projection period
pub end_date: DateTime<Utc>,
/// Projected cost amount
pub projected_cost: f64,
/// Currency code (e.g., 'USD')
pub currency: String,
/// Projection model used (e.g., 'linear', 'average_30d')
pub projection_model: String,
/// Confidence level of the projection
pub confidence_level: Option<f64>,
/// Additional metadata about the projection (JSON)
pub metadata: Option<String>,
/// Creation timestamp
pub created_at: DateTime<Utc>,
/// Last update timestamp
pub updated_at: DateTime<Utc>,
}
Represents a cost projection entry in the system.
pub struct ResourcePricing {
/// Unique identifier
pub id: i64,
/// Resource type ID
pub resource_type_id: i32,
/// Provider ID
pub provider_id: i64,
/// Region ID (optional)
pub region_id: Option<i64>,
/// Tier name (e.g., 'standard', 'premium')
pub tier_name: String,
/// Price per unit
pub unit_price: f64,
/// Currency code (e.g., 'USD')
pub currency: String,
/// When this pricing becomes effective
pub effective_from: DateTime<Utc>,
/// When this pricing expires (optional)
pub effective_to: Option<DateTime<Utc>>,
/// Pricing model (e.g., 'on-demand', 'reserved')
pub pricing_model: String,
/// Commitment period (e.g., '1-year', '3-year')
pub commitment_period: Option<String>,
/// Volume discount tiers (JSON)
pub volume_discount_tiers: Option<String>,
/// Creation timestamp
pub created_at: DateTime<Utc>,
/// Last update timestamp
pub updated_at: DateTime<Utc>,
}
Represents a resource pricing entry in the system.
pub struct CostAllocationTag {
/// Unique identifier
pub id: i64,
/// Tag key
pub tag_key: String,
/// Tag value
pub tag_value: String,
/// Resource ID
pub resource_id: i64,
/// Resource type
pub resource_type: String,
/// Creation timestamp
pub created_at: DateTime<Utc>,
/// Last update timestamp
pub updated_at: DateTime<Utc>,
Represents a cost allocation tag in the system.