192 lines
5.6 KiB
Go
192 lines
5.6 KiB
Go
package models
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"encoding/json"
|
|
"github.com/winc-link/hummingbird/internal/pkg/constants"
|
|
)
|
|
|
|
// TypeSpec 物模型的属性、事件、动作的基础信息字段
|
|
type TypeSpec struct {
|
|
Type constants.SpecsType `json:"type,omitempty"`
|
|
Specs string `json:"specs,omitempty"`
|
|
}
|
|
|
|
type TypeSpecIntOrFloat struct {
|
|
Min string `json:"min,omitempty"`
|
|
Max string `json:"max,omitempty"`
|
|
Step string `json:"step,omitempty"`
|
|
Unit string `json:"unit,omitempty"`
|
|
UnitName string `json:"unitName,omitempty"`
|
|
}
|
|
|
|
func (t *TypeSpecIntOrFloat) TransformTostring() string {
|
|
b, _ := json.Marshal(t)
|
|
return string(b)
|
|
}
|
|
|
|
type TypeSpecText struct {
|
|
Length string `json:"length,omitempty"`
|
|
}
|
|
|
|
func (t *TypeSpecText) TransformTostring() string {
|
|
b, _ := json.Marshal(t)
|
|
return string(b)
|
|
}
|
|
|
|
type TypeSpecBool map[string]string
|
|
|
|
func (t *TypeSpecBool) TransformTostring() string {
|
|
b, _ := json.Marshal(t)
|
|
return string(b)
|
|
}
|
|
|
|
type TypeSpecArray struct {
|
|
Size string `json:"size,omitempty"`
|
|
Item Item `json:"item,omitempty"`
|
|
}
|
|
|
|
func (t *TypeSpecArray) TransformTostring() string {
|
|
b, _ := json.Marshal(t)
|
|
return string(b)
|
|
}
|
|
|
|
type TypeSpecEnum map[string]string
|
|
|
|
func (t *TypeSpecEnum) TransformTostring() string {
|
|
b, _ := json.Marshal(t)
|
|
return string(b)
|
|
}
|
|
|
|
type TypeSpecStruct struct {
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
DataType TypeSpec `json:"data_type"`
|
|
}
|
|
|
|
func (t *TypeSpecStruct) TransformTostring() string {
|
|
b, _ := json.Marshal(t)
|
|
return string(b)
|
|
}
|
|
|
|
type TypeSpecDate struct {
|
|
}
|
|
|
|
func (t *TypeSpecDate) TransformTostring() string {
|
|
b, _ := json.Marshal(t)
|
|
return string(b)
|
|
}
|
|
|
|
type Item struct {
|
|
Type string `json:"type,omitempty"`
|
|
}
|
|
|
|
func (c Item) Value() (driver.Value, error) {
|
|
return GormValueWrap(c)
|
|
}
|
|
|
|
func (c *Item) Scan(value interface{}) error {
|
|
return GormScanWrap(value, c)
|
|
}
|
|
|
|
type Properties struct {
|
|
Id string `json:"id" gorm:"id;primaryKey;not null;type:string;size:255;comment:主键"`
|
|
ProductId string `json:"product_id" gorm:"type:string;size:255;comment:产品ID"`
|
|
Name string `json:"name" gorm:"type:string;size:255;comment:名字"`
|
|
Code string `json:"code" gorm:"type:string;size:255;comment:标识符"`
|
|
AccessMode string `json:"access_mode" gorm:"type:string;size:50;comment:读写模型"`
|
|
Require bool `json:"require" gorm:"comment:是否必须"`
|
|
TypeSpec TypeSpec `json:"type_spec" gorm:"type:text;comment:属性物模型详情"`
|
|
Description string `json:"description" gorm:"type:text;comment:描述"`
|
|
Tag string `json:"tag" gorm:"type:string;size:50;comment:标签"`
|
|
System bool `json:"system" gorm:"comment:系统内置"`
|
|
Timestamps
|
|
}
|
|
|
|
func (c TypeSpec) Value() (driver.Value, error) {
|
|
return GormValueWrap(c)
|
|
}
|
|
|
|
func (c *TypeSpec) Scan(value interface{}) error {
|
|
return GormScanWrap(value, c)
|
|
}
|
|
|
|
func (p *Properties) TableName() string {
|
|
return "properties"
|
|
}
|
|
|
|
func (p *Properties) Get() interface{} {
|
|
return *p
|
|
}
|
|
|
|
type Actions struct {
|
|
Id string `json:"id" gorm:"id;primaryKey;not null;type:string;size:255;comment:主键"`
|
|
ProductId string `json:"product_id" gorm:"type:string;size:255;comment:产品ID"`
|
|
Code string `json:"code" gorm:"type:string;size:255;comment:标识符"`
|
|
Name string `json:"name" gorm:"type:string;size:255;comment:名字"`
|
|
Description string `json:"description" gorm:"type:text;comment:描述"`
|
|
Require bool `json:"require" gorm:"comment:是否必须"`
|
|
CallType constants.CallType `json:"call_type" gorm:"type:string;size:50;comment:调用方式"`
|
|
InputParams InPutParams `json:"input_params" gorm:"type:text;comment:输入参数"` // 输入参数
|
|
OutputParams OutPutParams `json:"output_params" gorm:"type:text;comment:输入参数"` // 输出参数
|
|
Tag string `json:"tag" gorm:"type:string;size:50;comment:标签"`
|
|
System bool `json:"system" gorm:"comment:系统内置"`
|
|
Timestamps
|
|
}
|
|
|
|
type InPutParams []InputOutput
|
|
|
|
type InputOutput struct {
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
TypeSpec TypeSpec `json:"type_spec"`
|
|
}
|
|
|
|
func (c InPutParams) Value() (driver.Value, error) {
|
|
return GormValueWrap(c)
|
|
}
|
|
|
|
func (c *InPutParams) Scan(value interface{}) error {
|
|
return GormScanWrap(value, c)
|
|
}
|
|
|
|
type OutPutParams []InputOutput
|
|
|
|
func (c OutPutParams) Value() (driver.Value, error) {
|
|
return GormValueWrap(c)
|
|
}
|
|
|
|
func (c *OutPutParams) Scan(value interface{}) error {
|
|
return GormScanWrap(value, c)
|
|
}
|
|
|
|
func (table *Actions) TableName() string {
|
|
return "actions"
|
|
}
|
|
|
|
func (table *Actions) Get() interface{} {
|
|
return *table
|
|
}
|
|
|
|
type Events struct {
|
|
Id string `json:"id" gorm:"id;primaryKey;not null;type:string;size:255;comment:主键"`
|
|
ProductId string `json:"product_id" gorm:"type:string;size:255;comment:产品ID"`
|
|
EventType string `json:"event_type" gorm:"type:string;size:255;comment:事件类型"`
|
|
Code string `json:"code" gorm:"type:string;size:255;comment:标识符"`
|
|
Name string `json:"name" gorm:"type:string;size:255;comment:名字"`
|
|
Description string `json:"description" gorm:"type:text;comment:描述"`
|
|
Require bool `json:"require" gorm:"comment:是否必须"`
|
|
OutputParams OutPutParams `json:"output_params" gorm:"type:text;comment:输入参数"`
|
|
Tag string `json:"tag" gorm:"type:string;size:50;comment:标签"`
|
|
System bool `json:"system" gorm:"comment:系统内置"`
|
|
Timestamps
|
|
}
|
|
|
|
func (table *Events) TableName() string {
|
|
return "events"
|
|
}
|
|
|
|
func (table *Events) Get() interface{} {
|
|
return *table
|
|
}
|