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
+35 -1
View File
@@ -15,12 +15,22 @@ import (
"gorm.io/gorm"
)
type DeliveryHandler struct{ service *service.DeliveryService }
type DeliveryHandler struct {
service *service.DeliveryService
}
type PostgreSQLDeliveryHandler struct {
service *service.PostgreSQLDeliveryService
}
func NewDeliveryHandler(s *service.DeliveryService) *DeliveryHandler {
return &DeliveryHandler{service: s}
}
func NewPostgreSQLDeliveryHandler(s *service.PostgreSQLDeliveryService) *PostgreSQLDeliveryHandler {
return &PostgreSQLDeliveryHandler{service: s}
}
type DeliveryCallbackHandler struct {
service *service.DeliveryService
token string
@@ -108,6 +118,30 @@ func (h *DeliveryHandler) CreateMySQL(c *gin.Context) {
c.JSON(status, gin.H{"task": task, "idempotent_replay": existing})
}
// CreatePostgreSQL submits a standalone or primary/replica PostgreSQL delivery.
func (h *PostgreSQLDeliveryHandler) CreatePostgreSQL(c *gin.Context) {
claims, ok := CurrentClaims(c)
if !ok {
c.JSON(http.StatusUnauthorized, gin.H{"error": "missing current user"})
return
}
var req service.PostgreSQLDeliveryInput
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
task, existing, err := h.service.CreateTask(c.Request.Context(), claims.UserID, claims.IsAdmin, c.GetHeader("Idempotency-Key"), req)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
status := http.StatusAccepted
if existing {
status = http.StatusOK
}
c.JSON(status, gin.H{"task": task, "idempotent_replay": existing})
}
// List 获取交付任务列表
// @Summary 获取交付任务列表
// @Description 返回当前用户可见的交付任务列表(管理员可见全部)