68 lines
3.4 KiB
Go
68 lines
3.4 KiB
Go
package model
|
|
|
|
import "git.ma-al.com/goc_daniel/b2b/app/model/dbmodel"
|
|
|
|
type ProductInList struct {
|
|
ProductID uint `gorm:"column:product_id" json:"product_id" form:"product_id"`
|
|
Name string `gorm:"column:name" json:"name" form:"name"`
|
|
LinkRewrite string `gorm:"column:link_rewrite" json:"link_rewrite"`
|
|
ImageLink string `gorm:"column:image_link" json:"image_link"`
|
|
CategoryName string `gorm:"column:category_name" json:"category_name" form:"category_name"`
|
|
Reference string `gorm:"column:reference" json:"reference"`
|
|
VariantsNumber uint `gorm:"column:variants_number" json:"variants_number"`
|
|
Quantity int64 `gorm:"column:quantity" json:"quantity"`
|
|
PriceTaxExcl float64 `gorm:"column:price_tax_excl" json:"price_tax_excl"`
|
|
PriceTaxIncl float64 `gorm:"column:price_tax_incl" json:"price_tax_incl"`
|
|
IsFavorite bool `gorm:"column:is_favorite" json:"is_favorite"`
|
|
IsNew bool `gorm:"column:is_new" json:"is_new"`
|
|
IsOEM bool `gorm:"column:is_oem" json:"is_oem"`
|
|
}
|
|
|
|
type ProductFilters struct {
|
|
Sort string `json:"sort,omitempty" query:"sort,omitempty" example:"price,asc;name,desc"` // sort rule
|
|
ProductID uint `json:"product_id,omitempty" query:"product_id,omitempty" example:"1"`
|
|
Price float64 `json:"price,omitempty" query:"price,omitempty" example:"123.45"`
|
|
Name string `json:"name,omitempty" query:"name,omitempty" example:"Sztabka Złota Britannia"`
|
|
CategoryID uint `json:"category_id,omitempty" query:"category_id,omitempty" example:"2"`
|
|
CategoryName string `json:"category_name,omitempty" query:"category_name,omitempty" example:"Złote Monety"`
|
|
Features FeatVal `query:"features,omitempty"`
|
|
ActiveSale bool `query:"sale_active,omitempty"`
|
|
InStock uint `query:"stock,omitempty"`
|
|
}
|
|
|
|
type FeatVal = map[uint][]uint
|
|
|
|
type B2bFavorite struct {
|
|
UserID uint `gorm:"column:user_id;not null;primaryKey" json:"user_id"`
|
|
ProductID uint `gorm:"column:product_id;not null;primaryKey" json:"product_id"`
|
|
}
|
|
|
|
func (*B2bFavorite) TableName() string {
|
|
return "b2b_favorites"
|
|
}
|
|
|
|
// contains everything that is editable in product (and possibly more)
|
|
type ProductEditing struct {
|
|
Product dbmodel.PsProduct `json:"product,omitempty"`
|
|
ProductShop dbmodel.PsProductShop `json:"product_shop,omitempty"`
|
|
ProductLang []dbmodel.PsProductLang `json:"product_lang,omitempty"`
|
|
CategoryProduct []dbmodel.PsCategoryProduct `json:"category_product"`
|
|
ProductTag []dbmodel.PsTag `json:"tag"`
|
|
Feature []ProductFeature `json:"features"`
|
|
Attachments []dbmodel.PsProductAttachment `json:"product_attachment"`
|
|
Carrier []dbmodel.PsProductCarrier `json:"product_carrier"`
|
|
Accessory []dbmodel.PsAccessory `json:"accessory"`
|
|
SpecificPrice []dbmodel.PsSpecificPrice `json:"specific_price"`
|
|
SpecificPricePriority []dbmodel.PsSpecificPricePriority `json:"specific_price_priority"`
|
|
}
|
|
|
|
type ProductFeature struct {
|
|
FeatureValue dbmodel.PsFeatureValue `json:"featue_value"`
|
|
FeatureValueLang []dbmodel.PsFeatureValueLang `json:"featue_value_lang"`
|
|
}
|
|
|
|
type ProductCustomizationField struct {
|
|
CustomizationField dbmodel.PsCustomizationField `json:"customization_field"`
|
|
CustomizationFieldLang dbmodel.PsCustomizationFieldLang `json:"customization_field_lang"`
|
|
}
|