This commit is contained in:
lbenedar
2026-03-18 13:37:10 +03:00
parent 63f6d49221
commit 9c42c7ccbf
3 changed files with 46 additions and 1 deletions

View File

@@ -128,3 +128,27 @@ func (app *application) updateMovieHandler(w http.ResponseWriter, r *http.Reques
app.serverErrorResponse(w, r, err)
}
}
func (app *application) deleteMovieHandler(w http.ResponseWriter, r *http.Request) {
id, err := app.readIDParam(r)
if err != nil {
app.notFoundResponse(w, r)
return
}
err = app.models.Movies.Delete(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{"message": "movie succesfully deleted"}, nil)
if err != nil {
app.serverErrorResponse(w, r, err)
}
}

View File

@@ -16,6 +16,6 @@ func (app *application) routes() *httprouter.Router {
router.HandlerFunc(http.MethodPost, "/v1/movies", app.createMovieHandler)
router.HandlerFunc(http.MethodGet, "/v1/movies/:id", app.showMovieHandler)
router.HandlerFunc(http.MethodPut, "/v1/movies/:id", app.updateMovieHandler)
router.HandlerFunc(http.MethodDelete, "/v1/movies/:id", app.deleteMovieHandler)
return router
}

View File

@@ -85,6 +85,27 @@ func (m MovieModel) Update(movie *Movie) error {
}
func (m MovieModel) Delete(id int64) error {
if id < 1 {
return ErrRecordNotFound
}
query := `
DELETE FROM movies
WHERE id = $1`
result, err := m.DB.Exec(query, id)
if err != nil {
return err
}
rowsAffected, err := result.RowsAffected()
if err != nil {
return err
}
if rowsAffected == 0 {
return ErrRecordNotFound
}
return nil
}