Documentation
¶
Overview ¶
revive:disable until there is a central package.
Index ¶
- Variables
- func CompareHashAndPassword(hashedPassword []byte, password []byte) error
- func GenerateHashedPassword(password []byte) ([]byte, error)
- func HashToken(s string) []byte
- type Cart
- type CartCreate
- type CartFilter
- type CartService
- type CartUpdate
- type Category
- type CategoryCreate
- type CategoryFilter
- type CategoryService
- type CategoryUpdate
- type Product
- type ProductCreate
- type ProductFilter
- type ProductService
- type ProductUpdate
- type Search
- type Searcher
- type Token
- type TokenService
- type User
- type UserCreate
- type UserFilter
- type UserLogin
- type UserService
- type WrapCart
- type WrapCartList
- type WrapCategory
- type WrapCategoryList
- type WrapProduct
- type WrapProductList
- type WrapToken
- type WrapUser
- type WrapUserList
Constants ¶
This section is empty.
Variables ¶
var ( ErrCartInvalidUserID = errors.New("invalid user id cart") ErrCartInvalidProductID = errors.New("invalid product id cart") ErrNoCartsFound = errors.New("no carts found") )
var ( ErrDuplicatedCategory = errors.New("duplicated category") ErrNoCategoryFound = errors.New("no categories found") ErrCategoryConflict = errors.New("update conflict error") )
var ( ErrInvalidProductCategory = errors.New("invalid category") ErrDuplicatedProduct = errors.New("duplicated product") ErrNoProductsFound = errors.New("products not found") ErrProductConflict = errors.New("update conflict error") )
var ( // ErrInvalidToken returns when requested token is not found in store. ErrInvalidToken = errors.New("invalid user token") ErrNoTokenFound = errors.New("token not found") )
var ( ErrDuplicatedUserEmail = errors.New("duplicated email") ErrNoUsersFound = errors.New("no users to list") )
var (
ErrNoSearchResult = errors.New("requested resource not found")
)
Functions ¶
func CompareHashAndPassword ¶
CompareHashAndPassword compares hash and plaintext password.
func GenerateHashedPassword ¶
GenerateHashedPassword generates hashed password.
Types ¶
type Cart ¶
type Cart struct {
ID int `json:"id"`
ProductID int `json:"product_id" db:"product_id"`
Quantity int `json:"quantity" db:"quantity"`
UserID int `json:"user_id" db:"user_id"`
}
Cart represents carts model.
type CartCreate ¶
type CartCreate struct {
UserID int `json:"user_id"`
ProductID int `json:"product_id"`
Quantity int `json:"quantity"`
}
CartCreate represents carts model for POST requests.
func (CartCreate) CreateModel ¶
func (c CartCreate) CreateModel() Cart
CreateModel set input values to a new struct and return a new instance.
func (CartCreate) Validate ¶
func (c CartCreate) Validate() error
Validate validates update products.
type CartFilter ¶
type CartFilter struct {
ID int `json:"id"`
UserID int `json:"user_id"`
Limit int `json:"limit"`
Offset int `json:"offset"`
Sort string `json:"sort"`
}
CartFilter represents filters passed to List.
type CartService ¶
type CartService interface {
GetByUser(ctx context.Context, userID int) ([]Cart, error)
GetByID(ctx context.Context, ID int) (Cart, error)
List(ctx context.Context, filter CartFilter) ([]Cart, error)
Create(ctx context.Context, cart *Cart) error
Update(ctx context.Context, ID int, cart CartUpdate) (Cart, error)
Delete(ctx context.Context, userID int) error
}
CartService represents a service for managing carts.
type CartUpdate ¶
CartUpdate represents carts model for PATCH requests.
func (CartUpdate) UpdateModel ¶
func (c CartUpdate) UpdateModel(cart *Cart)
UpdateModel checks whether carts input are not nil and set values.
func (CartUpdate) Validate ¶
func (c CartUpdate) Validate() error
Validate validates update products.
type Category ¶
type Category struct {
ID int `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
CreatedAt time.Time `json:"-" db:"created_at"`
UpdatedAt time.Time `json:"-" db:"updated_at"`
Version int `json:"version"`
}
Category represents categories model.
type CategoryCreate ¶
type CategoryCreate struct {
Name string `json:"name" validate:"required"`
Description string `json:"description" validate:"required"`
}
CategoryCreate represents categories model for POST requests.
func (CategoryCreate) CreateModel ¶
func (c CategoryCreate) CreateModel() Category
CreateModel set input values to a new struct and return a new instance.
func (CategoryCreate) Validate ¶
func (c CategoryCreate) Validate() error
Validate validates POST requests model.
type CategoryFilter ¶
type CategoryFilter struct {
ID int `json:"int"`
Name string `json:"name"`
Sort string `json:"sort"`
Limit int `json:"limit"`
Offset int `json:"offset"`
}
CategoryFilter represents filters passed to List.
type CategoryService ¶
type CategoryService interface {
Create(ctx context.Context, category *Category) error
GetByID(ctx context.Context, ID int) (Category, error)
Update(ctx context.Context, ID int, category CategoryUpdate) (Category, error)
Delete(ctx context.Context, ID int) error
List(ctx context.Context, filter CategoryFilter) ([]Category, error)
}
CategoryService represents a service for managing categories.
type CategoryUpdate ¶
type CategoryUpdate struct {
Name *string `json:"name" validate:"omitempty,required"`
Description *string `json:"description" validate:"omitempty,required"`
Version int `json:"version" validate:"required"`
}
CategoryUpdate represents categories model for PATCH requests.
func (CategoryUpdate) UpdateModel ¶
func (c CategoryUpdate) UpdateModel(category *Category)
UpdateModel checks whether input are not nil and set values.
func (CategoryUpdate) Validate ¶
func (c CategoryUpdate) Validate() error
Validate validates PATCH requests model.
type Product ¶
type Product struct {
ID int `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
CategoryID int `json:"category_id" db:"category_id"`
Price int `json:"price"`
Quantity int `json:"quantity"`
CreatedAt time.Time `json:"-" db:"created_at"`
UpdatedAt time.Time `json:"-" db:"updated_at"`
Version int `json:"version"`
}
Product represents products model.
type ProductCreate ¶
type ProductCreate struct {
Name string `json:"name"`
Description string `json:"description"`
CategoryID int `json:"category_id"`
Price int `json:"price"`
Quantity int `json:"quantity"`
}
ProductCreate represents products model for POST requests.
func (ProductCreate) CreateModel ¶
func (p ProductCreate) CreateModel() Product
CreateModel set input values to a new struct and return a new instance.
func (ProductCreate) Validate ¶
func (p ProductCreate) Validate() error
Validate validates POST requests model.
type ProductFilter ¶
type ProductFilter struct {
ID int `json:"id"`
CategoryID int `json:"category"`
Limit int `json:"limit"`
Offset int `json:"offset"`
Sort string `json:"sort"`
}
ProductFilter represents filters passed to List.
type ProductService ¶
type ProductService interface {
Create(ctx context.Context, product *Product) error
GetByID(ctx context.Context, ID int) (Product, error)
Update(ctx context.Context, ID int, product ProductUpdate) (Product, error)
Delete(ctx context.Context, ID int) error
List(ctx context.Context, filter ProductFilter) ([]Product, error)
}
ProductService represents a service for managing products.
type ProductUpdate ¶
type ProductUpdate struct {
Name *string `json:"name"`
Description *string `json:"description"`
CategoryID *int `json:"category_id"`
Price *int `json:"price"`
Quantity *int `json:"quantity"`
Version int `json:"version"`
}
ProductUpdate represents products model for PATCH requests.
func (ProductUpdate) UpdateModel ¶
func (p ProductUpdate) UpdateModel(product *Product)
UpdateModel checks whether products input are not nil and set values.
func (ProductUpdate) Validate ¶
func (p ProductUpdate) Validate() error
Validate validates PATCH requests model.
type Search ¶
type Search struct {
Prodcuts *Product `json:"products,omitempty"`
Categories *Category `json:"categories,omitempty"`
}
Search represents search results to users.
type Token ¶
type Token struct {
Hashed []byte `json:"-"`
Plain string `json:"plain_token" db:"-"`
UserID int `json:"-" db:"user_id"`
Expiry time.Time `json:"expiry"`
}
Token represents token model.
type TokenService ¶
type TokenService interface {
Create(ctx context.Context, token Token) error
GetUserID(ctx context.Context, hashedToken string) (int, error)
}
TokenService represents a service for managing tokens.
type User ¶
type User struct {
ID int `json:"id"`
Email string `json:"email"`
Password []byte `json:"-" db:"password_hash"`
}
User represents users model.
type UserCreate ¶
type UserCreate struct {
Email string `json:"email" validate:"required,email,lte=500"`
Password string `json:"password" validate:"required,gte=8,lte=72"`
}
UserCreate represents users model for POST requests.
func (UserCreate) CreateModel ¶
func (u UserCreate) CreateModel(password []byte) User
CreateModel set input values and password to a new struct and return a new instance.
func (UserCreate) Validate ¶
func (u UserCreate) Validate() error
Validate validates POST requests model.
type UserFilter ¶
type UserFilter struct {
Email string `json:"email"`
ID int `json:"id"`
Limit int `json:"limit"`
Offset int `json:"offset"`
Sort string `json:"sort"`
}
UserFilter represents filters passed to /users requests.
type UserLogin ¶
type UserLogin struct {
Email string `json:"email" validate:"required"`
Password string `json:"password" validate:"required"`
}
UserLogin represents users model for login requests.
type UserService ¶
type UserService interface {
Create(ctx context.Context, user *User) error
GetByID(ctx context.Context, ID int) (User, error)
GetByEmail(ctx context.Context, email string) (User, error)
Delete(ctx context.Context, ID int) error
List(ctx context.Context, filter UserFilter) ([]User, error)
}
UserService represents a service for managing users.
type WrapCart ¶
type WrapCart struct {
Cart Cart `json:"cart"`
}
WrapCart wraps carts for user representation.
type WrapCartList ¶
type WrapCartList struct {
Carts []Cart `json:"carts"`
}
WrapCartList wraps list of carts for user representation.
type WrapCategory ¶
type WrapCategory struct {
Category Category `json:"category"`
}
WrapCategory wraps categories for user representation.
type WrapCategoryList ¶
type WrapCategoryList struct {
Categories []Category `json:"categories"`
}
WrapCategoryList wraps list of list categories for user representation.
type WrapProduct ¶
type WrapProduct struct {
Product Product `json:"product"`
}
WrapProduct wraps products for user representation.
type WrapProductList ¶
type WrapProductList struct {
Products []Product `json:"products"`
}
WrapProductList wraps list of products for user representation.
type WrapToken ¶
type WrapToken struct {
Token Token `json:"token"`
}
WrapToken wraps token for user representation.
type WrapUser ¶
type WrapUser struct {
User User `json:"user"`
}
WrapUser wraps users for user representation.
type WrapUserList ¶
type WrapUserList struct {
Users []User `json:"users"`
}
WrapUserList wraps list of users for user representation.