This commit is contained in:
lbenedar
2026-03-18 14:09:48 +03:00
parent 43c81cf8e1
commit ce8dfb1522
4 changed files with 25 additions and 3 deletions

View File

@@ -7,6 +7,7 @@ import (
var (
ErrRecordNotFound = errors.New("record not found")
ErrEditConflict = errors.New("edit conflict")
)
type Models struct {

View File

@@ -70,7 +70,7 @@ func (m MovieModel) Update(movie *Movie) error {
query := `
UPDATE movies
SET title=$1, year=$2, runtime=$3, genres=$4, version = version + 1
WHERE id = $5
WHERE id = $5 AND version = $6
RETURNING version`
args := []any{
@@ -79,9 +79,20 @@ func (m MovieModel) Update(movie *Movie) error {
movie.Runtime,
pq.Array(movie.Genres),
movie.ID,
movie.Version,
}
return m.DB.QueryRow(query, args...).Scan(&movie.Version)
err := m.DB.QueryRow(query, args...).Scan(&movie.Version)
if err != nil {
switch {
case errors.Is(err, sql.ErrNoRows):
return ErrEditConflict
default:
return err
}
}
return nil
}
func (m MovieModel) Delete(id int64) error {