This commit is contained in:
lbenedar
2026-03-18 13:04:55 +03:00
parent 9dadd5d256
commit 0a8a1602a6
2 changed files with 41 additions and 9 deletions

View File

@@ -1,9 +1,9 @@
package main
import (
"errors"
"fmt"
"net/http"
"time"
"gitea.local.lab/Lbenedar/greenlight/internal/data"
"gitea.local.lab/Lbenedar/greenlight/internal/validator"
@@ -58,13 +58,15 @@ func (app *application) showMovieHandler(w http.ResponseWriter, r *http.Request)
return
}
movie := data.Movie{
ID: id,
CreatedAt: time.Now(),
Title: "Casablanca",
Runtime: 102,
Genres: []string{"drama", "romance", "war"},
Version: 1,
movie, err := app.models.Movies.Get(id)
if err != nil {
switch {
case errors.Is(err, data.ErrRecordNotFound):
app.notFoundResponse(w, r)
default:
app.serverErrorResponse(w, r, err)
}
return
}
err = app.writeJSON(w, http.StatusOK, envelope{"movie": movie}, nil)

View File

@@ -2,6 +2,7 @@ package data
import (
"database/sql"
"errors"
"time"
"gitea.local.lab/Lbenedar/greenlight/internal/validator"
@@ -33,7 +34,36 @@ func (m MovieModel) Insert(movie *Movie) error {
}
func (m MovieModel) Get(id int64) (*Movie, error) {
return nil, nil
if id < 1 {
return nil, ErrRecordNotFound
}
query := `
SELECT id, created_at, title, year, runtime, genres, version
FROM movies
WHERE id = $1`
var movie Movie
err := m.DB.QueryRow(query, id).Scan(
&movie.ID,
&movie.CreatedAt,
&movie.Title,
&movie.Year,
&movie.Runtime,
pq.Array(&movie.Genres),
&movie.Version,
)
if err != nil {
switch {
case errors.Is(err, sql.ErrNoRows):
return nil, ErrRecordNotFound
default:
return nil, err
}
}
return &movie, nil
}
func (m MovieModel) Update(movie *Movie) error {