Skip to content

Commit

Permalink
fix: 解决update conflict的错误 (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
deliangyang authored Sep 13, 2022
1 parent 4511a20 commit e56e1bf
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions entity.go
Original file line number Diff line number Diff line change
Expand Up @@ -383,8 +383,9 @@ func (pis *PrepareInsertStatement) execContext(ctx context.Context, ent Entity)

// PrepareUpdateStatement is a prepared update statement for entity
type PrepareUpdateStatement struct {
md *Metadata
stmt *sqlx.NamedStmt
md *Metadata
stmt *sqlx.NamedStmt
dbDriver string
}

// PrepareUpdate returns a prepared update statement for Entity
Expand All @@ -394,15 +395,17 @@ func PrepareUpdate(ctx context.Context, ent Entity, db DB) (*PrepareUpdateStatem
return nil, fmt.Errorf("get metadata, %w", err)
}

query := getStatement(commandUpdate, md, dbDriver(db))
driver := dbDriver(db)
query := getStatement(commandUpdate, md, driver)
stmt, err := db.PrepareNamedContext(ctx, query)
if err != nil {
return nil, err
}

return &PrepareUpdateStatement{
md: md,
stmt: stmt,
md: md,
stmt: stmt,
dbDriver: driver,
}, nil
}

Expand All @@ -421,6 +424,9 @@ func (pus *PrepareUpdateStatement) ExecContext(ctx context.Context, ent Entity)
}

if err := pus.execContext(ctx, ent); err != nil {
if isConflictError(err, pus.dbDriver) {
return ErrConflict
}
return err
}

Expand Down

0 comments on commit e56e1bf

Please sign in to comment.