代码拉取完成,页面将自动刷新
package torm
import (
"errors"
"reflect"
)
// Schema model definition
type Schema struct {
Fields []*Field
PrimaryField *Field
attributes map[string]interface{}
}
func (s *Schema) SetId(id int64) error {
for _, f := range s.Fields {
if f.Primary {
f.SetValue(id)
break
}
}
return nil
}
func (s *Schema) Attributes() map[string]interface{} {
if s.attributes == nil {
s.attributes = make(map[string]interface{})
for _, field := range s.Fields {
if !field.Ignored {
s.attributes[field.Name] = field.Value.Addr().Interface()
}
}
}
return s.attributes
}
func NewSchema(model interface{}) (*Schema, error) {
results := reflect.Indirect(reflect.ValueOf(model))
kind := results.Kind()
if kind != reflect.Struct {
return nil, errors.New("unsupported value, should be struct")
}
var resultType reflect.Type
var resultValue reflect.Value
resultType = results.Type()
resultValue = results
var schema Schema
for i := 0; i < resultType.NumField(); i++ {
field := NewField(resultValue.Field(i), resultType.Field(i))
if schema.PrimaryField == nil && field.Primary {
schema.PrimaryField = field
}
schema.Fields = append(schema.Fields, field)
}
return &schema, nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。