model

package
v0.0.0-...-1c87972 Latest Latest
Warning

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

Go to latest
Published: May 5, 2019 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SaveData

func SaveData(data interface{}) error

func ValidateUniq

func ValidateUniq(fl validator.FieldLevel) bool

Types

type Category

type Category struct {
	gorm.Model
	Name string
	Slug string
}

func GetCategories

func GetCategories() []Category

func GetCategoryByID

func GetCategoryByID(id string) (Category, error)

func (*Category) SetDeletedAt

func (c *Category) SetDeletedAt(t time.Time)

type CategoryValidator

type CategoryValidator struct {
	CategoryTmp struct {
		Name string `form:"name" json:"name" binding:"required,is-uniq"`
		Slug string `form:"slug" json:"slug" binding:"required"`
	} `json:"category"`
	CategoryModel Category `json:"-"`
}

func (*CategoryValidator) Bind

func (s *CategoryValidator) Bind(c *gin.Context) error

func (*CategoryValidator) TableName

func (c *CategoryValidator) TableName() string

type LoginValidator

type LoginValidator struct {
	UserTmp struct {
		Email    string `form:"email" json:"email" binding:"required,email"`
		Password string `form:"password" json:"password" binding:"required,min=6,max=64"`
	} `json:"user"`
	UserModel User `json:"-"`
}

LoginValidator ...

func (*LoginValidator) Bind

func (lv *LoginValidator) Bind(c *gin.Context) error

type Option

type Option struct {
	ID        uint `gorm:"primary_key" json:"id" structs:"id"`
	Name      string
	Position  int
	ProductID uint
	Product   Product
	Vals      []byte // Can't be values, coz MySQL keyword
	CreatedAt time.Time
	UpdatedAt time.Time
}

func (*Option) AddValue

func (o *Option) AddValue(newVal string) error

func (*Option) RemoveValue

func (o *Option) RemoveValue(rmVal string) error

func (*Option) SetValues

func (o *Option) SetValues(data []string)

func (*Option) ValuesArr

func (o *Option) ValuesArr() (data []string)

type OptionParams

type OptionParams struct {
	Name string   `json:"name"`
	Vals []string `json:"vals"`
}

type OptionsValidator

type OptionsValidator struct {
	OptionsTmp []OptionParams `json:"options"`
	Options    []Option       `json:"-"`
}

Options Validator

func (*OptionsValidator) Bind

func (o *OptionsValidator) Bind(c *gin.Context) error

type Product

type Product struct {
	gorm.Model
	Title       string     `json:"title"`
	BodyHTML    *string    `json:"body_html"`
	PublishedAt *time.Time `json:"published_at"`
	Vendor      *string    `json:"vendor"`
	Keywords    *string    `json:"keywords"`
	Price       float32    `json:"price" sql:"default:0.0"`
	Slug        string     `json:"slug"`
	StockQty    int        `json:"stock_qty" sql:"default:0"`
	Status      int        `json:"status" sql:"default:0"`
	HotSale     bool       `json:"hot_sale" sql:"default:false"`
	NewArrival  bool       `json:"new_arrival"` // 不需要 default:true 否则会有 bug
	CategoryID  int        `json:"category_id"`
	Tags        []Tag      `gorm:"many2many:taggings;"`
	Taggings    []Tagging
	Category    Category
	Cover       *string
	Variants    []Variant
	Options     []Option
}

func GetProductByID

func GetProductByID(id string) (Product, error)

func GetProducts

func GetProducts() []Product

func (*Product) AddOption

func (p *Product) AddOption(option Option) error

AddOption 添加一个新的 Option(Vals只有一个值), 现有的非 default Variants 的对应值改变即可

func (*Product) AddOptions

func (p *Product) AddOptions(options []Option) error

AddOptions 初始化 Options, delete 所有 variants!

func (*Product) AfterCreate

func (p *Product) AfterCreate(tx *gorm.DB) (err error)

AfterCreate 默认创建一个没有任何 option 的 Variant

func (*Product) DeleteOption

func (p *Product) DeleteOption(option *Option) error

DeleteOption 删除一个 Option

func (*Product) FindOptionByID

func (p *Product) FindOptionByID(id string) (*Option, error)

func (*Product) FindVariantByID

func (p *Product) FindVariantByID(id string) (*Variant, error)

func (*Product) GetCategory

func (p *Product) GetCategory() error

func (*Product) GetDefaultVariant

func (p *Product) GetDefaultVariant() *Variant

func (*Product) GetTags

func (p *Product) GetTags() error

func (*Product) OptionExists

func (p *Product) OptionExists(name string) bool

OptionExists 是否存在 Name: name 的 Option

func (*Product) RebuildVariants

func (p *Product) RebuildVariants()

RebuildVariants 根据 Options 生成相应的 Variants, 原有 Variants 删除???

func (*Product) RemoveTag

func (p *Product) RemoveTag(tagName string)

func (*Product) SetTag

func (p *Product) SetTag(tagName string) error

func (*Product) SoftDeleteVaiants

func (p *Product) SoftDeleteVaiants()

SoftDeleteVaiants 把关联的 Variants 也 delete

type ProductValidator

type ProductValidator struct {
	ProductTmp struct {
		Title       string     `form:"title" json:"title" binding:"required"`
		BodyHTML    *string    `form:"body_html" json:"body_html"`
		PublishedAt *time.Time `form:"published_at" json:"published_at"`
		Vendor      *string    `form:"vendor" json:"vendor"`
		Keywords    *string    `form:"keywords" json:"keywords"`
		Price       float32    `form:"price" json:"price"`
		Slug        string     `form:"slug" json:"slug" binding:"required"`
		StockQty    int        `form:"stock_qty" json:"stock_qty"`
		Status      int        `form:"status" json:"status"`
		HotSale     bool       `form:"hot_sale" json:"hot_sale"`
		NewArrival  bool       `form:"new_arrival" json:"new_arrival"`
		CategoryID  int        `form:"category_id" json:"category_id"`
	} `json:"product"`
	ProductModel Product `json:"-"`
}

func (*ProductValidator) Bind

func (pv *ProductValidator) Bind(c *gin.Context) error

type Tag

type Tag struct {
	ID            uint
	Name          string
	CreatedAt     time.Time
	UpdatedAt     time.Time
	TaggingsCount uint
	Products      []Product `gorm:"many2many:taggings;"`
}

type Tagging

type Tagging struct {
	ID        uint
	TagID     uint
	ProductID uint
	CreatedAt time.Time
	UpdatedAt time.Time
}

type User

type User struct {
	gorm.Model
	Username       string
	Email          string
	PasswordDigest string
}

func FindUserByEmail

func FindUserByEmail(email string) (User, error)

func FindUserByName

func FindUserByName(username string) (User, error)

func (*User) CheckPassword

func (u *User) CheckPassword(password string) error

type UserValidator

type UserValidator struct {
	UserTmp struct {
		Username string `json:"username" binding:"required"`
		Email    string `json:"email" binding:"required,email,is-uniq"`
		Password string `json:"password" binding:"required,min=6,max=64"`
	} `json:"user"`
	UserModel User `json:"-"`
}

UserValidator ...

func (*UserValidator) Bind

func (uv *UserValidator) Bind(c *gin.Context) error

func (*UserValidator) TableName

func (c *UserValidator) TableName() string

type Variant

type Variant struct {
	gorm.Model
	Price     float32
	Sku       string
	Stock     int
	Position  int
	ProductID uint
	Product   Product
	IsDefault bool
	Option1   string
	Option2   string
	Option3   string
}

func VariantsBuilding

func VariantsBuilding(options []Option) (variants []Variant)

type VariantValidator

type VariantValidator struct {
	VariantTmp struct {
		Price    float32 `form:"price" json:"price"`
		Stock    int     `form:"stock" json:"stock"`
		Sku      string  `form:"sku" json:"sku" binding:"required"`
		Position int     `form:"position" json:"position"`
	} `json:"variant"`
	VariantModel Variant `json:"-"`
}

func (*VariantValidator) Bind

func (vv *VariantValidator) Bind(c *gin.Context) error

Jump to

Keyboard shortcuts

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