Skip to content

Commit 50dc5a4

Browse files
committed
[messages] fix some issues
1 parent 4e09935 commit 50dc5a4

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

internal/sms-gateway/modules/messages/repository.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func (r *Repository) Insert(message *Message) error {
136136
return nil
137137
}
138138

139-
if mysql.IsPrimaryKeyViolation(err) {
139+
if errors.Is(err, gorm.ErrDuplicatedKey) || mysql.IsPrimaryKeyViolation(err) {
140140
return ErrMessageAlreadyExists
141141
}
142142

@@ -159,7 +159,10 @@ func (r *Repository) UpdateState(message *Message) error {
159159
}
160160

161161
for _, v := range message.Recipients {
162-
if err := tx.Model(&v).Where("message_id = ?", message.ID).Select("State", "Error").Updates(&v).Error; err != nil {
162+
if err := tx.Model(&MessageRecipient{}).
163+
Where("message_id = ? AND phone_number = ?", message.ID, v.PhoneNumber).
164+
Select("state", "error").
165+
Updates(map[string]any{"state": v.State, "error": v.Error}).Error; err != nil {
163166
return err
164167
}
165168
}

pkg/mysql/errors.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package mysql
22

3-
import "github.com/go-sql-driver/mysql"
3+
import (
4+
"errors"
5+
6+
"github.com/go-sql-driver/mysql"
7+
)
48

59
func IsPrimaryKeyViolation(err error) bool {
6-
if mysqlErr, ok := err.(*mysql.MySQLError); ok {
7-
return mysqlErr.Number == 1062
10+
var me *mysql.MySQLError
11+
if errors.As(err, &me) {
12+
return me.Number == 1062
813
}
914
return false
1015
}

0 commit comments

Comments
 (0)