Updating movies.go with MovieModel: this struct is the gateway between our app and the database. Adding CRUD methods alongside for the Movie object. Creating models.go: this file holds a Models struct wrapping all of our Models. This way, we are able to use in our application struct in our main.go.
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"greenlight.craftr.fr/internal/data"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
@@ -40,13 +41,11 @@ type config struct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// application struct hold the dependencies for our HTTP handlers, helpers, and middleware.
|
||||||
Define an application struct to hold the dependencies for our HTTP handlers, helpers,
|
|
||||||
and middleware.
|
|
||||||
*/
|
|
||||||
type application struct {
|
type application struct {
|
||||||
config config
|
config config
|
||||||
logger *slog.Logger
|
logger *slog.Logger
|
||||||
|
models data.Models
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -91,6 +90,7 @@ func main() {
|
|||||||
app := &application{
|
app := &application{
|
||||||
config: cfg,
|
config: cfg,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
|
models: data.NewModels(db),
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
23
internal/data/models.go
Normal file
23
internal/data/models.go
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
package data
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ErrRecordNotFound : Define a custom ErrRecordNotFound error. We'll return this from our Get() method when looking up a movie that doesn't exist in our database.
|
||||||
|
var (
|
||||||
|
ErrRecordNotFound = errors.New("record not found")
|
||||||
|
)
|
||||||
|
|
||||||
|
// Models : Wraps the MovieModel. We'll add other models to this, like a UserModel and PermissionModel, as our build progresses.
|
||||||
|
type Models struct {
|
||||||
|
Movies MovieModel
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewModels : For ease of use, this method returns a Models struct containing the initialized MovieModel.
|
||||||
|
func NewModels(db *sql.DB) Models {
|
||||||
|
return Models{
|
||||||
|
Movies: MovieModel{DB: db},
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
package data
|
package data
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"greenlight.craftr.fr/internal/validator"
|
"database/sql"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"greenlight.craftr.fr/internal/validator"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Movie
|
// Movie
|
||||||
@@ -41,3 +43,28 @@ func ValidateMovie(v *validator.Validator, movie *Movie) {
|
|||||||
// Not that we're using the Unique helper in the line below to check that all values in the input.Genres slice are unique
|
// 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")
|
v.Check(validator.Unique(movie.Genres), "genres", "must not contain duplicate values")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MovieModel struct type wraps a sql.DB connection pool
|
||||||
|
type MovieModel struct {
|
||||||
|
DB *sql.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert : Inserting a new record in the movies table
|
||||||
|
func (m MovieModel) Insert(movie *Movie) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get : Fetching a specific record from the movies table
|
||||||
|
func (m MovieModel) Get(id int64) (*Movie, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update : Updating a specific record in the movies table
|
||||||
|
func (m MovieModel) Update(movie *Movie) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete : Deleting a specific record from the movies table
|
||||||
|
func (m MovieModel) Delete(id int64) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user