Files
b2b/app/model/product.go
2026-04-17 11:46:34 +02:00

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"`
}