data

package
v0.0.0-...-032bc8c Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2023 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ScopeActivation     = "activation"
	ScopeAuthentication = "authentication"
	ScopePasswordReset  = "password-reset"
)

Variables

View Source
var (
	ErrRecordNotFound     = errors.New("record not found")
	ErrEditConflict       = errors.New("edit conflict")
	ErrInvalidCredentials = errors.New("invalid credentials")
)
View Source
var AnonymousUser = &User{}
View Source
var (
	ErrDuplicateEmail = errors.New("duplicate email")
)
View Source
var (
	ErrDuplicatePermission = errors.New("duplicate permission made")
)
View Source
var (
	ErrDuplicateProfile = errors.New("duplicate profile")
)
View Source
var ErrInvalidRuntimeFormat = errors.New("invalid runtime format")

Functions

func ValidateChangePassword

func ValidateChangePassword(v *validator.Validator, currentpassword, newpassword, confirmpassword string)

func ValidateEmail

func ValidateEmail(v *validator.Validator, email string)

func ValidateFilters

func ValidateFilters(v *validator.Validator, f Filters)

func ValidateMovie

func ValidateMovie(v *validator.Validator, movie *Movie)

func ValidatePasswordPlaintext

func ValidatePasswordPlaintext(v *validator.Validator, password string)

func ValidateProfilePicture

func ValidateProfilePicture(v *validator.Validator, fileHeaderSize int64, ext string, file multipart.File) (image.Image, error)

func ValidateTokenPlaintext

func ValidateTokenPlaintext(v *validator.Validator, tokenPlaintext string)

func ValidateUser

func ValidateUser(v *validator.Validator, user *User)

Types

type Filters

type Filters struct {
	Page         int
	PageSize     int
	Sort         string
	SortSafelist []string
}

type Metadata

type Metadata struct {
	CurrentPage  int `json:"current_page,omitempty"`
	PageSize     int `json:"page_size,omitempty"`
	FirstPage    int `json:"first_page,omitempty"`
	LastPage     int `json:"last_page,omitempty"`
	TotalRecords int `json:"total_records,omitempty"`
}

type Models

type Models struct {
	Movies interface {
		Insert(movie *Movie) error
		Get(id int64) (*Movie, error)
		Update(movie *Movie) error
		Delete(id int64) error
		GetAll(title string, genres []string, filters Filters) ([]*Movie, Metadata, error)
	}
	Tokens interface {
		Insert(token *Token) error
		DeleteAllForUser(scope string, userID int64, userIP *string) error
		New(userID int64, ttl time.Duration, scope string, r *http.Request) (*Token, error)
	}
	Users interface {
		Insert(user *User) error
		GetByEmail(email string) (*User, error)
		Update(user *User) error
		GetForToken(tokenScope, tokenPlaintext string) (*User, error)
		ChangePassword(id int64, newPassword string) error
		Delete(id int64) error
	}
	Permissions interface {
		GetAllForUser(userID int64) (Permissions, error)
		AddForUser(userID int64, codes ...string) error
	}
	UsersProfile interface {
		Insert(profile *UserProfile) error
		Update(profile *UserProfile) error
		InsertProfilePic(userID int64) error
		Get(userID int64) (*UserProfile, error)
		DeletOldPicture(imagePath string) error
	}
}

func NewModels

func NewModels(db *sql.DB) Models

type Movie

type Movie struct {
	ID        int64     `json:"id"`
	UserID    int64     `json:"-"`
	CreatedAt time.Time `json:"-"`
	Title     string    `json:"title"`
	Year      int32     `json:"year,omitempty"`
	Runtime   Runtime   `json:"runtime,omitempty"`
	Genres    []string  `json:"genres,omitempty"`
	Version   int32     `json:"version"`
}

type MovieModel

type MovieModel struct {
	DB *sql.DB
}

func (MovieModel) Delete

func (m MovieModel) Delete(id int64) error

func (MovieModel) Get

func (m MovieModel) Get(id int64) (*Movie, error)

func (MovieModel) GetAll

func (m MovieModel) GetAll(title string, genres []string, filters Filters) ([]*Movie, Metadata, error)

func (MovieModel) Insert

func (m MovieModel) Insert(movie *Movie) error

func (MovieModel) Update

func (m MovieModel) Update(movie *Movie) error

type Password

type Password struct {
	Plaintext *string
	Hash      []byte
}

func (*Password) Matches

func (p *Password) Matches(plaintextPassword string) (bool, error)

func (*Password) Set

func (p *Password) Set(plaintextPassword string) error

type PermissionModel

type PermissionModel struct {
	DB *sql.DB
}

func (PermissionModel) AddForUser

func (m PermissionModel) AddForUser(userID int64, codes ...string) error

func (PermissionModel) GetAllForUser

func (m PermissionModel) GetAllForUser(userID int64) (Permissions, error)

type Permissions

type Permissions []string

func (Permissions) Include

func (p Permissions) Include(code string) bool

type ProfileModel

type ProfileModel struct {
	DB *sql.DB
}

func (ProfileModel) DeletOldPicture

func (p ProfileModel) DeletOldPicture(imagePath string) error

func (ProfileModel) Get

func (p ProfileModel) Get(userID int64) (*UserProfile, error)

func (ProfileModel) Insert

func (p ProfileModel) Insert(profile *UserProfile) error

func (ProfileModel) InsertProfilePic

func (p ProfileModel) InsertProfilePic(userID int64) error

func (ProfileModel) Update

func (p ProfileModel) Update(profile *UserProfile) error

type Runtime

type Runtime int32

func (Runtime) MarshalJSON

func (r Runtime) MarshalJSON() ([]byte, error)

func (*Runtime) UnmarshalJSON

func (r *Runtime) UnmarshalJSON(jsonValue []byte) error

type Token

type Token struct {
	Plaintext string    `json:"token"`
	Hash      []byte    `json:"-"`
	UserID    int64     `json:"-"`
	UserIP    string    `json:"-"`
	Expiry    time.Time `json:"expiry"`
	Scope     string    `json:"-"`
}

type TokenModel

type TokenModel struct {
	DB *sql.DB
}

func (TokenModel) DeleteAllForUser

func (m TokenModel) DeleteAllForUser(scope string, userID int64, userIP *string) error

func (TokenModel) Insert

func (m TokenModel) Insert(token *Token) error

func (TokenModel) New

func (m TokenModel) New(userID int64, ttl time.Duration, scope string, r *http.Request) (*Token, error)

type User

type User struct {
	ID        int64     `json:"id"`
	CreatedAt time.Time `json:"created_at"`
	Name      string    `json:"name"`
	Email     string    `json:"email"`
	Password  Password  `json:"-"`
	Activated bool      `json:"activated"`
	Admin     bool      `json:"admin"`
	Version   int       `json:"-"`
}

func (*User) IsAnonymous

func (u *User) IsAnonymous() bool

type UserModel

type UserModel struct {
	DB *sql.DB
}

func (UserModel) ChangePassword

func (m UserModel) ChangePassword(id int64, newPassword string) error

func (UserModel) Delete

func (m UserModel) Delete(id int64) error

func (UserModel) GetByEmail

func (m UserModel) GetByEmail(email string) (*User, error)

func (UserModel) GetForToken

func (m UserModel) GetForToken(tokenScope, tokenPlaintext string) (*User, error)

func (UserModel) Insert

func (m UserModel) Insert(user *User) error

func (UserModel) Update

func (m UserModel) Update(user *User) error

type UserProfile

type UserProfile struct {
	ImagePath string `json:"image_path"`
	UserID    int64  `json:"user_id"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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