From 985340c557c21dedbf2d882147e974b4920247a0 Mon Sep 17 00:00:00 2001 From: lbenedar Date: Wed, 18 Mar 2026 14:26:45 +0300 Subject: [PATCH] ch8.3 --- internal/data/movies.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/internal/data/movies.go b/internal/data/movies.go index d55559c..a6a8c4d 100644 --- a/internal/data/movies.go +++ b/internal/data/movies.go @@ -1,6 +1,7 @@ package data import ( + "context" "database/sql" "errors" "time" @@ -30,7 +31,11 @@ func (m MovieModel) Insert(movie *Movie) error { RETURNING id, created_at, version` args := []any{movie.Title, movie.Year, movie.Runtime, pq.Array(movie.Genres)} - return m.DB.QueryRow(query, args...).Scan(&movie.ID, &movie.CreatedAt, &movie.Version) + + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + + return m.DB.QueryRowContext(ctx, query, args...).Scan(&movie.ID, &movie.CreatedAt, &movie.Version) } func (m MovieModel) Get(id int64) (*Movie, error) { @@ -45,7 +50,10 @@ func (m MovieModel) Get(id int64) (*Movie, error) { var movie Movie - err := m.DB.QueryRow(query, id).Scan( + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + + err := m.DB.QueryRowContext(ctx, query, id).Scan( &movie.ID, &movie.CreatedAt, &movie.Title, @@ -82,7 +90,10 @@ func (m MovieModel) Update(movie *Movie) error { movie.Version, } - err := m.DB.QueryRow(query, args...).Scan(&movie.Version) + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + + err := m.DB.QueryRowContext(ctx, query, args...).Scan(&movie.Version) if err != nil { switch { case errors.Is(err, sql.ErrNoRows): @@ -104,7 +115,10 @@ func (m MovieModel) Delete(id int64) error { DELETE FROM movies WHERE id = $1` - result, err := m.DB.Exec(query, id) + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + + result, err := m.DB.ExecContext(ctx, query, id) if err != nil { return err }