diff --git a/cmd/web/main.go b/cmd/web/main.go index 48d024d..c0d5855 100644 --- a/cmd/web/main.go +++ b/cmd/web/main.go @@ -22,6 +22,7 @@ type application struct { errorLog *log.Logger infoLog *log.Logger snippets *models.SnippetModel + users *models.UserModel templateCache map[string]*template.Template formDecoder *form.Decoder sessionManager *scs.SessionManager @@ -63,6 +64,7 @@ func main() { errorLog: errorLog, infoLog: infoLog, snippets: &models.SnippetModel{DB: db}, + users: &models.UserModel{DB: db}, templateCache: templateCache, formDecoder: formDecoder, sessionManager: sessionManager, diff --git a/internal/models/errors.go b/internal/models/errors.go index c7845a7..0184556 100644 --- a/internal/models/errors.go +++ b/internal/models/errors.go @@ -2,4 +2,8 @@ package models import "errors" -var ErrNoRecord = errors.New("models: no matching record found") +var ( + ErrNoRecord = errors.New("models: no matching record found") + ErrInvalidCredentials = errors.New("models: invalid credentials") + ErrDuplicateEmail = errors.New("models: duplicate email") +) diff --git a/internal/models/users.go b/internal/models/users.go new file mode 100644 index 0000000..61b4e2b --- /dev/null +++ b/internal/models/users.go @@ -0,0 +1,30 @@ +package models + +import ( + "database/sql" + "time" +) + +type User struct { + ID int + Name string + Email string + HashedPassword []byte + Created time.Time +} + +type UserModel struct { + DB *sql.DB +} + +func (m *UserModel) Insert(name, email, password string) error { + return nil +} + +func (m *UserModel) Authenticate(email, password string) (int, error) { + return 0, nil +} + +func (m *UserModel) Exists(id int) (bool, error) { + return false, nil +}