feat(delivery): integrate PostgreSQL delivery

This commit is contained in:
l x
2026-07-31 10:30:03 +08:00
parent 048ac6507e
commit 66fde73792
25 changed files with 2110 additions and 139 deletions
+66 -1
View File
@@ -39,12 +39,14 @@ type DeliveryTask struct {
RequestedBy uint64 `gorm:"not null;index" json:"requested_by"`
Component string `gorm:"size:32;not null;default:mysql;index" json:"component"`
TargetType string `gorm:"size:32;not null" json:"target_type"`
ServiceType string `gorm:"size:32;not null;default:'mysql';index" json:"service_type"`
TargetID uint64 `gorm:"not null;index" json:"target_id"`
Namespace string `gorm:"size:63;not null;index" json:"namespace"`
InstanceName string `gorm:"size:63;not null" json:"instance_name"`
TargetHost string `gorm:"size:128" json:"target_host,omitempty"`
TargetHost string `gorm:"size:1024" json:"target_host,omitempty"`
TargetHostIP string `gorm:"size:64" json:"target_host_ip,omitempty"`
MySQLPort int `gorm:"column:mysql_port;not null;default:3307" json:"mysql_port"`
PostgreSQLPort int `gorm:"column:postgresql_port;not null;default:15432" json:"postgresql_port,omitempty"`
Status string `gorm:"size:32;not null;index" json:"status"`
ImmutablePayload string `gorm:"type:json;not null" json:"immutable_payload"`
PayloadHash string `gorm:"size:64;not null" json:"payload_hash"`
@@ -126,6 +128,69 @@ type DeploymentCredential struct {
UpdatedAt time.Time `json:"updated_at"`
}
type PostgreSQLCluster struct {
ID uint64 `gorm:"primaryKey" json:"id"`
TaskID string `gorm:"size:36;not null;uniqueIndex" json:"task_id"`
BusinessLineID uint64 `gorm:"not null;index" json:"business_line_id"`
TargetID uint64 `gorm:"not null;index" json:"target_id"`
Name string `gorm:"size:63;not null;uniqueIndex" json:"name"`
VersionMajor string `gorm:"size:8;not null" json:"version_major"`
Topology string `gorm:"size:32;not null" json:"topology"`
ReplicationMode string `gorm:"size:32;not null;default:'async'" json:"replication_mode"`
FailoverMode string `gorm:"size:32;not null;default:'manual'" json:"failover_mode"`
PrimaryInstanceID uint64 `gorm:"not null;default:0" json:"primary_instance_id"`
Status string `gorm:"size:32;not null;index" json:"status"`
BackupStatus string `gorm:"size:32;not null;default:'not_configured'" json:"backup_status"`
MonitoringStatus string `gorm:"size:32;not null;default:'not_configured'" json:"monitoring_status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type PostgreSQLInstance struct {
ID uint64 `gorm:"primaryKey" json:"id"`
TaskID string `gorm:"size:36;not null;index" json:"task_id"`
ClusterID uint64 `gorm:"not null;index" json:"cluster_id"`
BusinessLineID uint64 `gorm:"not null;index" json:"business_line_id"`
TargetID uint64 `gorm:"not null;index" json:"target_id"`
InstanceID string `gorm:"size:63;not null;uniqueIndex" json:"instance_id"`
Hostname string `gorm:"size:255;not null;uniqueIndex:idx_postgresql_host_port,priority:1" json:"hostname"`
HostIP string `gorm:"size:64;not null" json:"host_ip"`
Port int `gorm:"not null;index:idx_postgresql_host_port,priority:2" json:"port"`
DataDir string `gorm:"size:512;not null;uniqueIndex" json:"data_dir"`
ConfigDir string `gorm:"size:512;not null" json:"config_dir"`
LogDir string `gorm:"size:512;not null" json:"log_dir"`
SystemdUnit string `gorm:"size:128;not null" json:"systemd_unit"`
VersionMajor string `gorm:"size:8;not null" json:"version_major"`
VersionFull string `gorm:"size:32;not null;default:''" json:"version_full"`
Role string `gorm:"size:16;not null" json:"role"`
HAComponentRole string `gorm:"size:16;not null;default:'database'" json:"ha_component_role"`
UpstreamInstanceID string `gorm:"size:63;not null;default:''" json:"upstream_instance_id"`
ReplicationSlotName string `gorm:"size:63;not null;default:''" json:"replication_slot_name"`
Status string `gorm:"size:32;not null;index" json:"status"`
BackupStatus string `gorm:"size:32;not null;default:'not_configured'" json:"backup_status"`
MonitoringStatus string `gorm:"size:32;not null;default:'not_configured'" json:"monitoring_status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type PostgreSQLResourceUsage struct {
ID uint64 `gorm:"primaryKey" json:"id"`
TaskID string `gorm:"size:36;not null;index" json:"task_id"`
InstanceID uint64 `gorm:"not null;uniqueIndex" json:"instance_id"`
ClusterID uint64 `gorm:"not null;index" json:"cluster_id"`
BusinessLineID uint64 `gorm:"not null;index" json:"business_line_id"`
TargetID uint64 `gorm:"not null;index" json:"target_id"`
CPUMilli int64 `gorm:"not null" json:"cpu_milli"`
MemoryMi int64 `gorm:"not null" json:"memory_mi"`
StorageGi int64 `gorm:"not null" json:"storage_gi"`
Port int `gorm:"not null" json:"port"`
DataDir string `gorm:"size:512;not null" json:"data_dir"`
Status string `gorm:"size:32;not null;index" json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ReleasedAt *time.Time `json:"released_at,omitempty"`
}
type ExecutionJob struct {
ID uint64 `gorm:"primaryKey" json:"id"`
TaskID string `gorm:"size:36;not null;uniqueIndex" json:"task_id"`