Exporting the validation from cmd/api/movies.go to internal/data/movies.go by creating the ValidateMovie method. Updating createMovieHandler to use our new ValidateMovie method.
All checks were successful
Deploy Greenlight API / deploy (push) Successful in 55s
All checks were successful
Deploy Greenlight API / deploy (push) Successful in 55s
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package data
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"greenlight.craftr.fr/internal/validator"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Movie
|
||||
/*
|
||||
@@ -19,3 +22,22 @@ type Movie struct {
|
||||
Genres []string `json:"genres,omitempty"`
|
||||
Version int32 `json:"version"`
|
||||
}
|
||||
|
||||
func ValidateMovie(v *validator.Validator, movie *Movie) {
|
||||
// Use the Check() method to execute our validation checks. This will add the provided key and error message to the errors maps if the check does not evaluate to true. For example, in the first line we "check that the title is not equal to an empty string".
|
||||
v.Check(movie.Title != "", "title", "must be provided")
|
||||
v.Check(len(movie.Title) <= 500, "title", "must not be more than 500 bytes long")
|
||||
|
||||
v.Check(movie.Year != 0, "year", "must be provided")
|
||||
v.Check(movie.Year >= 1888, "year", "must be greater than 1888")
|
||||
v.Check(movie.Year <= int32(time.Now().Year()), "year", "must not be in the future")
|
||||
|
||||
v.Check(movie.Runtime != 0, "runtime", "must be provided")
|
||||
v.Check(movie.Runtime > 0, "runtime", "must be a positive integer")
|
||||
|
||||
v.Check(movie.Genres != nil, "genres", "must be provided")
|
||||
v.Check(len(movie.Genres) >= 1, "genres", "must contain at least 1 genre")
|
||||
v.Check(len(movie.Genres) <= 5, "genres", "must not contain more than 5 genres")
|
||||
// Not that we're using the Unique helper in the line below to check that all values in the input.Genres slice are unique
|
||||
v.Check(validator.Unique(movie.Genres), "genres", "must not contain duplicate values")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user