diff --git a/models/publish.go b/models/publish.go index f437643..6152740 100644 --- a/models/publish.go +++ b/models/publish.go @@ -1,6 +1,11 @@ package models -import "github.com/google/uuid" +import ( + "fmt" + + "github.com/google/uuid" + "github.com/tecamino/tecamino-json_data/utils" +) type Publish struct { Event string `json:"event,omitempty"` @@ -9,3 +14,33 @@ type Publish struct { Type Type `json:"type,omitempty"` Value any `json:"value,omitempty"` } + +func (p *Publish) ConvertValue() any { + switch p.Type { + case BIT: + return utils.BoolFrom(p.Value) + case BYS: + return utils.Int8From(p.Value) + case BYU: + return utils.Uint8From(p.Value) + case WOS: + return utils.Int16From(p.Value) + case WOU: + return utils.Uint16From(p.Value) + case DWS: + return utils.Int32From(p.Value) + case DWU: + return utils.Uint32From(p.Value) + case LOS: + return utils.Int64From(p.Value) + case LOU: + return utils.Uint64From(p.Value) + case F32: + return utils.Float32From(p.Value) + case F64: + return utils.Float64From(p.Value) + case STR: + return fmt.Sprintf("%v", p.Value) + } + return nil +}