File tree Expand file tree Collapse file tree 2 files changed +13
-5
lines changed
internal/sms-gateway/modules/messages Expand file tree Collapse file tree 2 files changed +13
-5
lines changed Original file line number Diff line number Diff 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 }
Original file line number Diff line number Diff line change 11package mysql
22
3- import "github.com/go-sql-driver/mysql"
3+ import (
4+ "errors"
5+
6+ "github.com/go-sql-driver/mysql"
7+ )
48
59func 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}
You can’t perform that action at this time.
0 commit comments