78 lines
6.8 KiB
Go
78 lines
6.8 KiB
Go
package model
|
|
|
|
// Product contains each and every column from the table ps_product.
|
|
type Product struct {
|
|
ProductID uint `gorm:"column:id_product;primaryKey" json:"product_id" form:"product_id"`
|
|
SupplierID uint `gorm:"column:id_supplier" json:"supplier_id" form:"supplier_id"`
|
|
ManufacturerID uint `gorm:"column:id_manufacturer" json:"manufacturer_id" form:"manufacturer_id"`
|
|
CategoryDefaultID uint `gorm:"column:id_category_default" json:"category_default_id" form:"category_default_id"`
|
|
ShopDefaultID uint `gorm:"column:id_shop_default" json:"shop_default_id" form:"shop_default_id"`
|
|
TaxRulesGroupID uint `gorm:"column:id_tax_rules_group" json:"tax_rules_group_id" form:"tax_rules_group_id"`
|
|
OnSale uint `gorm:"column:on_sale" json:"on_sale" form:"on_sale"`
|
|
OnlineOnly uint `gorm:"column:online_only" json:"online_only" form:"online_only"`
|
|
EAN13 string `gorm:"column:ean13;type:varchar(13)" json:"ean13" form:"ean13"`
|
|
ISBN string `gorm:"column:isbn;type:varchar(32)" json:"isbn" form:"isbn"`
|
|
UPC string `gorm:"column:upc;type:varchar(12)" json:"upc" form:"upc"`
|
|
EkoTax float32 `gorm:"column:eko_tax;type:decimal(20,6)" json:"eko_tax" form:"eko_tax"`
|
|
Quantity uint `gorm:"column:quantity" json:"quantity" form:"quantity"`
|
|
MinimalQuantity uint `gorm:"column:minimal_quantity" json:"minimal_quantity" form:"minimal_quantity"`
|
|
LowStockThreshold uint `gorm:"column:low_stock_threshold" json:"low_stock_threshold" form:"low_stock_threshold"`
|
|
LowStockAlert uint `gorm:"column:low_stock_alert" json:"low_stock_alert" form:"low_stock_alert"`
|
|
Price float32 `gorm:"column:price;type:decimal(20,6)" json:"price" form:"price"`
|
|
WholesalePrice float32 `gorm:"column:wholesale_price;type:decimal(20,6)" json:"wholesale_price" form:"wholesale_price"`
|
|
Unity string `gorm:"column:unity;type:varchar(255)" json:"unity" form:"unity"`
|
|
UnitPriceRatio float32 `gorm:"column:unit_price_ratio;type:decimal(20,6)" json:"unit_price_ratio" form:"unit_price_ratio"`
|
|
UnitID uint `gorm:"column:id_unit;primaryKey" json:"unit_id" form:"unit_id"`
|
|
AdditionalShippingCost float32 `gorm:"column:additional_shipping_cost;type:decimal(20,2)" json:"additional_shipping_cost" form:"additional_shipping_cost"`
|
|
Reference string `gorm:"column:reference;type:varchar(64)" json:"reference" form:"reference"`
|
|
SupplierReference string `gorm:"column:supplier_reference;type:varchar(64)" json:"supplier_reference" form:"supplier_reference"`
|
|
Location string `gorm:"column:location;type:varchar(64)" json:"location" form:"location"`
|
|
|
|
Width float32 `gorm:"column:width;type:decimal(20,6)" json:"width" form:"width"`
|
|
Height float32 `gorm:"column:height;type:decimal(20,6)" json:"height" form:"height"`
|
|
Depth float32 `gorm:"column:depth;type:decimal(20,6)" json:"depth" form:"depth"`
|
|
Weight float32 `gorm:"column:weight;type:decimal(20,6)" json:"weight" form:"weight"`
|
|
OutOfStock uint `gorm:"column:out_of_stock" json:"out_of_stock" form:"out_of_stock"`
|
|
AdditionalDeliveryTimes uint `gorm:"column:additional_delivery_times" json:"additional_delivery_times" form:"additional_delivery_times"`
|
|
QuantityDiscount uint `gorm:"column:quantity_discount" json:"quantity_discount" form:"quantity_discount"`
|
|
Customizable uint `gorm:"column:customizable" json:"customizable" form:"customizable"`
|
|
UploadableFiles uint `gorm:"column:uploadable_files" json:"uploadable_files" form:"uploadable_files"`
|
|
TextFields uint `gorm:"column:text_fields" json:"text_fields" form:"text_fields"`
|
|
|
|
Active uint `gorm:"column:active" json:"active" form:"active"`
|
|
RedirectType string `gorm:"column:redirect_type;type:enum('','404','301-product','302-product','301-category','302-category')" json:"redirect_type" form:"redirect_type"`
|
|
TypeRedirectedID int `gorm:"column:id_type_redirected" json:"type_redirected_id" form:"type_redirected_id"`
|
|
AvailableForOrder uint `gorm:"column:available_for_order" json:"available_for_order" form:"available_for_order"`
|
|
AvailableDate string `gorm:"column:available_date;type:date" json:"available_date" form:"available_date"`
|
|
ShowCondition uint `gorm:"column:show_condition" json:"show_condition" form:"show_condition"`
|
|
Condition string `gorm:"column:condition;type:enum('new','used','refurbished')" json:"condition" form:"condition"`
|
|
ShowPrice uint `gorm:"column:show_price" json:"show_price" form:"show_price"`
|
|
|
|
Indexed uint `gorm:"column:indexed" json:"indexed" form:"indexed"`
|
|
Visibility string `gorm:"column:visibility;type:enum('both','catalog','search','none')" json:"visibility" form:"visibility"`
|
|
CacheIsPack uint `gorm:"column:cache_is_pack" json:"cache_is_pack" form:"cache_is_pack"`
|
|
CacheHasAttachments uint `gorm:"column:cache_has_attachments" json:"cache_has_attachments" form:"cache_has_attachments"`
|
|
IsVirtual uint `gorm:"column:is_virtual" json:"is_virtual" form:"is_virtual"`
|
|
CacheDefaultAttribute uint `gorm:"column:cache_default_attribute" json:"cache_default_attribute" form:"cache_default_attribute"`
|
|
DateAdd string `gorm:"column:date_add;type:datetime" json:"date_add" form:"date_add"`
|
|
DateUpd string `gorm:"column:date_upd;type:datetime" json:"date_upd" form:"date_upd"`
|
|
AdvancedStockManagement uint `gorm:"column:advanced_stock_management" json:"advanced_stock_management" form:"advanced_stock_management"`
|
|
PackStockType uint `gorm:"column:pack_stock_type" json:"pack_stock_type" form:"pack_stock_type"`
|
|
State uint `gorm:"column:state" json:"state" form:"state"`
|
|
DeliveryDays uint `gorm:"column:delivery_days" json:"delivery_days" form:"delivery_days"`
|
|
}
|
|
|
|
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
|