fix(delivery): add PostgreSQL rollback and CloudDM isolation
This commit is contained in:
@@ -16,15 +16,16 @@ import (
|
||||
)
|
||||
|
||||
type DeliveryHandler struct {
|
||||
service *service.DeliveryService
|
||||
service *service.DeliveryService
|
||||
postgresqlService *service.PostgreSQLDeliveryService
|
||||
}
|
||||
|
||||
type PostgreSQLDeliveryHandler struct {
|
||||
service *service.PostgreSQLDeliveryService
|
||||
}
|
||||
|
||||
func NewDeliveryHandler(s *service.DeliveryService) *DeliveryHandler {
|
||||
return &DeliveryHandler{service: s}
|
||||
func NewDeliveryHandler(s *service.DeliveryService, postgresqlService *service.PostgreSQLDeliveryService) *DeliveryHandler {
|
||||
return &DeliveryHandler{service: s, postgresqlService: postgresqlService}
|
||||
}
|
||||
|
||||
func NewPostgreSQLDeliveryHandler(s *service.PostgreSQLDeliveryService) *PostgreSQLDeliveryHandler {
|
||||
@@ -345,7 +346,14 @@ func (h *DeliveryHandler) RetryRollback(c *gin.Context) {
|
||||
if !requirePlatformAdmin(c) {
|
||||
return
|
||||
}
|
||||
if err := h.service.RetryRollback(c.Request.Context(), c.Param("id")); err != nil {
|
||||
taskID := c.Param("id")
|
||||
task, _, err := h.service.GetTask(c.Request.Context(), taskID, 0, true)
|
||||
if err == nil && task.ServiceType == "postgresql" && h.postgresqlService != nil {
|
||||
err = h.postgresqlService.RetryRollback(c.Request.Context(), taskID)
|
||||
} else if err == nil {
|
||||
err = h.service.RetryRollback(c.Request.Context(), taskID)
|
||||
}
|
||||
if err != nil {
|
||||
c.JSON(http.StatusConflict, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
@@ -358,7 +366,14 @@ func (h *DeliveryHandler) AcknowledgeRollbackRelease(c *gin.Context) {
|
||||
if !requirePlatformAdmin(c) {
|
||||
return
|
||||
}
|
||||
if err := h.service.AcknowledgeRollbackRelease(c.Request.Context(), c.Param("id")); err != nil {
|
||||
taskID := c.Param("id")
|
||||
task, _, err := h.service.GetTask(c.Request.Context(), taskID, 0, true)
|
||||
if err == nil && task.ServiceType == "postgresql" && h.postgresqlService != nil {
|
||||
err = h.postgresqlService.AcknowledgeRollbackRelease(c.Request.Context(), taskID)
|
||||
} else if err == nil {
|
||||
err = h.service.AcknowledgeRollbackRelease(c.Request.Context(), taskID)
|
||||
}
|
||||
if err != nil {
|
||||
c.JSON(http.StatusConflict, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
@@ -374,7 +389,8 @@ func (h *DeliveryHandler) RetryCloudDMRegistration(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
taskID := c.Param("id")
|
||||
if _, _, err := h.service.GetTask(c.Request.Context(), taskID, claims.UserID, claims.IsAdmin); err != nil {
|
||||
task, _, err := h.service.GetTask(c.Request.Context(), taskID, claims.UserID, claims.IsAdmin)
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": "task not found"})
|
||||
return
|
||||
@@ -382,7 +398,12 @@ func (h *DeliveryHandler) RetryCloudDMRegistration(c *gin.Context) {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
if err := h.service.RetryCloudDMRegistration(c.Request.Context(), taskID); err != nil {
|
||||
if task.ServiceType == "postgresql" && h.postgresqlService != nil {
|
||||
err = h.postgresqlService.RetryCloudDMRegistration(c.Request.Context(), taskID)
|
||||
} else {
|
||||
err = h.service.RetryCloudDMRegistration(c.Request.Context(), taskID)
|
||||
}
|
||||
if err != nil {
|
||||
c.JSON(http.StatusConflict, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user