models

package
v0.0.0-...-94e5688 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 27, 2019 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ErrUserIDRequired modelError = "models: user ID is required"
	ErrTitleRequired  modelError = "models: title is required"
)

Error verbiage.

View Source
const (
	// ErrNotFound is returned when a resource cannot be found in the database.
	ErrNotFound modelError = "models: resource not found"
	// ErrIDInvalid is returned when an invalid ID is provided to a method like
	// Delete.
	ErrIDInvalid modelError = "models: ID provided was invalid"
	// ErrPasswordIncorrect is returned when an invalid password is used when
	// attempting to authenticate a user.
	ErrPasswordIncorrect modelError = "models: incorrect password provided"
	// ErrPasswordRequired is returned when a create is attempted without a user
	// password provided.
	ErrPasswordRequired modelError = "models: password is required"
	// ErrEmailRequired is returned when an email address is not provided when
	// creating a user.
	ErrEmailRequired modelError = "models: email address is required"
	// ErrEmailInvalid is returned when an email address provided does not match
	// any of our requirements.
	ErrEmailInvalid modelError = "models: email address is not valid"
	// ErrEmailTaken is returned when an update or create is attempted with an
	// email address that is already in use.
	ErrEmailTaken modelError = "models: email address is already taken"
	// ErrPasswordTooShort is returned when a user tries to set a password that
	// is less than 8 characters long.
	ErrPasswordTooShort modelError = "models: password must be at least 8 characters long"
	// ErrRememberRequired is returned when a create or update is attempted
	// without a user remember token hash
	ErrRememberRequired modelError = "models: remember token is required"
	// ErrRememberTooShort is returned when a remember token is not at least 32
	// bytes.
	ErrRememberTooShort modelError = "models: remember token must be at least 32 bytes"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Gallery struct {
	gorm.Model
	UserID uint     `gorm:"not_null;index"`
	Title  string   `gorm:"not_null"`
	Images []string `gorm:"-"`
}

Gallery models a gallery resource.

type GalleryDB

type GalleryDB interface {
	ByID(id uint) (*Gallery, error)
	ByUserID(userID uint) ([]Gallery, error)
	Create(gallery *Gallery) error
	Update(gallery *Gallery) error
	Delete(id uint) error
}

GalleryDB provides the interface for interacting with the database for a gallery.

type GalleryService

type GalleryService interface {
	GalleryDB
}

GalleryService provides the interface the gallery service.

func NewGalleryService

func NewGalleryService(db *gorm.DB) GalleryService

NewGalleryService creates a new GalleryService using the given db.

type ImageService

type ImageService interface {
	Create(galleryID uint, r io.Reader, filename string) error
	ByGalleryID(galleryID uint) ([]string, error)
}

ImageService provides the interface for the image service.

func NewImageService

func NewImageService() ImageService

NewImageService returns a new image service.

type Services

type Services struct {
	Gallery GalleryService
	User    UserService
	Image   ImageService
	// contains filtered or unexported fields
}

Services contains all the services.

func NewServices

func NewServices(connectionInfo string) (*Services, error)

NewServices creates all the services using the given connection info.

func (*Services) AutoMigrate

func (s *Services) AutoMigrate() error

AutoMigrate will attempt to automatically migrate all tables.

func (*Services) Close

func (s *Services) Close() error

Close closes the database for the service.

func (*Services) DestructiveReset

func (s *Services) DestructiveReset() error

DestructiveReset drops all tables and rebuilds them.

type User

type User struct {
	gorm.Model
	Name         string
	Email        string `gorm:"not null;unique_index"`
	Password     string `gorm:"-"`
	PasswordHash string `gorm:"not null"`
	Remember     string `gorm:"-"`
	RememberHash string `gorm:"not null;unique_index"`
}

User models a user

type UserDB

type UserDB interface {
	// Methods for querying for single users
	ByID(id uint) (*User, error)
	ByEmail(email string) (*User, error)
	ByRemember(token string) (*User, error)
	// Methods for altering users
	Create(user *User) error
	Update(user *User) error
	Delete(id uint) error
}

UserDB is used to interact with the users database.

For pretty much all single user queries:

  • If the user is found, we will return a nil error
  • If the user is not found, we will return ErrNotFound
  • If there is another error, we will return an error with // more information about what went wrong. This may not be // an error generated by the models package.

For single user queries, any error but ErrNotFound should // probably result in a 500 error until we make "public" facing errors.

type UserService

type UserService interface {
	Authenticate(email, password string) (*User, error)
	UserDB
}

UserService is a set of methods used to manipulate and work with the user model.

func NewUserService

func NewUserService(db *gorm.DB) UserService

NewUserService creates a new UserService.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL