types(feat) create product type
This commit is contained in:
parent
2e5c91b410
commit
2de5aa94d7
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* file: types/product.go
|
||||
* author: Theo Technicguy
|
||||
* license: Apache 2.0
|
||||
*
|
||||
* Product type and functions
|
||||
*/
|
||||
|
||||
package types
|
||||
|
||||
type TTL struct {
|
||||
Normal uint `json:"normal"`
|
||||
Fridge uint `json:"fridge"`
|
||||
Freezer uint `json:"freezer"`
|
||||
}
|
||||
|
||||
type Product struct {
|
||||
Id uint `json:"id"`
|
||||
EAN uint `json:"ean"`
|
||||
Name string `json:"name"`
|
||||
TTL TTL `json:"ttl"`
|
||||
Tags []Tag `json:"tags"`
|
||||
}
|
||||
|
||||
func (t *TTL) ValidTTL() bool {
|
||||
if t.Normal == 0 {
|
||||
return true
|
||||
}
|
||||
|
||||
var fridge, freezer bool
|
||||
|
||||
if t.Fridge > 0 {
|
||||
fridge = t.Normal < t.Fridge
|
||||
} else {
|
||||
fridge = true
|
||||
}
|
||||
|
||||
if t.Freezer > 0 {
|
||||
freezer = t.Normal < t.Freezer
|
||||
} else {
|
||||
freezer = true
|
||||
}
|
||||
return fridge && freezer
|
||||
}
|
||||
|
||||
func (t *TTL) Valid() bool {
|
||||
return t.ValidTTL()
|
||||
}
|
||||
|
||||
func (p *Product) ValidName() bool {
|
||||
return p.Name != ""
|
||||
}
|
||||
|
||||
func (p *Product) Valid() bool {
|
||||
for _, tag := range p.Tags {
|
||||
if !tag.Valid() {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return p.TTL.Valid() && p.ValidName()
|
||||
}
|
Loading…
Reference in New Issue