44 "fmt"
55 "strings"
66 "sync"
7+ "sync/atomic"
78 "time"
89
910 "github.com/NdoleStudio/httpsms/pkg/entities"
@@ -153,18 +154,21 @@ func (h *MessageHandler) BulkSend(c *fiber.Ctx) error {
153154 wg := sync.WaitGroup {}
154155 params := request .ToMessageSendParams (h .userIDFomContext (c ), c .OriginalURL ())
155156 responses := make ([]* entities.Message , len (params ))
157+ count := atomic.Int64 {}
156158
157159 for index , message := range params {
158160 wg .Add (1 )
159161 go func (message services.MessageSendParams , index int ) {
162+ count .Add (1 )
160163 if message .SendAt == nil {
161164 sentAt := time .Now ().UTC ().Add (time .Duration (index ) * time .Second )
162165 message .SendAt = & sentAt
163166 }
164167
165168 response , err := h .service .SendMessage (ctx , message )
166169 if err != nil {
167- msg := fmt .Sprintf ("cannot send message with paylod [%s]" , c .Body ())
170+ count .Add (- 1 )
171+ msg := fmt .Sprintf ("cannot send message with paylod [%s] at index [%d]" , spew .Sdump (message ), index )
168172 ctxLogger .Error (stacktrace .Propagate (err , msg ))
169173 }
170174 responses [index ] = response
@@ -173,7 +177,7 @@ func (h *MessageHandler) BulkSend(c *fiber.Ctx) error {
173177 }
174178
175179 wg .Wait ()
176- return h .responseOK (c , fmt .Sprintf ("[%d] messages processed successfully" , len (responses )), responses )
180+ return h .responseOK (c , fmt .Sprintf ("%d out of %d messages processed successfully" , count . Load () , len (responses )), responses )
177181}
178182
179183// GetOutstanding returns an entities.Message which is still to be sent by the mobile phone
0 commit comments