From 8ac65e9f37b4848b7571eb3f0be6ffe9f6233ab1 Mon Sep 17 00:00:00 2001 From: Casey Elliott <69066370+scaseye@users.noreply.github.com> Date: Wed, 4 Nov 2026 09:12:08 -0800 Subject: [PATCH] fix(api): persist accepted manual deals Refactor send_deal endpoint to use sendManualAndSave method for handling deals and saving to the database. --- api/api.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/api/api.go b/api/api.go index 1496a9b5..d9f7da5f 100644 --- a/api/api.go +++ b/api/api.go @@ -371,7 +371,7 @@ func (s *Server) setupRoutes(e *echo.Echo) { e.GET("/api/piece/:id/metadata", s.getMetadataHandler) // Deal Schedule - e.POST("/api/send_deal", s.toEchoHandler(s.dealHandler.SendManualHandler)) + e.POST("/api/send_deal", s.toEchoHandler(s.sendManualAndSave)) e.POST("/api/schedule", s.toEchoHandler(s.scheduleHandler.CreateHandler)) e.GET("/api/schedule", s.toEchoHandler(s.scheduleHandler.ListHandler)) e.POST("/api/schedule/:id/pause", s.toEchoHandler(s.scheduleHandler.PauseHandler)) @@ -531,3 +531,16 @@ func httpResponseFromError(c echo.Context, e error) error { logger.Errorf("%+v", e) return c.JSON(httpStatusCode, HTTPError{Err: e.Error()}) } + +// sendManualAndSave persists accepted API proposals without replaying submission. +func (s *Server) sendManualAndSave(ctx context.Context, db *gorm.DB, maker replication.DealMaker, request deal.Proposal) (*model.Deal, error) { + result, err := s.dealHandler.SendManualHandler(ctx, db, maker, request) + if err != nil { + return nil, err + } + err = database.DoRetry(ctx, func() error { return db.WithContext(ctx).Create(result).Error }) + if err != nil { + return nil, err + } + return result, nil +}