feat(delivery): integrate PostgreSQL delivery
This commit is contained in:
@@ -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 返回当前用户可见的交付任务列表(管理员可见全部)
|
||||
|
||||
Reference in New Issue
Block a user