| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | package iiimport (	"golib/features/mo")func (f *FieldInfo) DefaultValue() any {	return f.defaultValue}func (f *FieldInfo) EnumsValue() mo.A {	enum := make(mo.A, len(f.enums))	for i, e := range f.enums {		enum[i] = e	}	return enum}func (f *FieldInfo) SubField(name string) (FieldInfo, bool) {	for _, field := range f.Fields {		if field.Name == name {			return field, true		}	}	return FieldInfo{}, false}func (f *FieldInfo) HasLookup() bool {	return f.Lookup.ForeignField != "" && f.Lookup.From != "" && f.Lookup.AS != ""}func (f *FieldInfo) Looker() *mo.Looker {	l := new(mo.Looker)	l.From(f.Lookup.From)	l.LocalField(f.Name)	l.ForeignField(f.Lookup.ForeignField)	l.As(f.Lookup.AS)	pipe := mo.Pipeline{}	if !f.Lookup.List {		pipe = append(pipe, mo.NewLimiter(1).Pipeline())	}	if len(f.Fields) > 0 {		p := mo.Projecter{}		for _, field := range f.Fields {			p.AddEnable(field.Name)		}		pipe = append(pipe, p.Pipeline())	}	l.Pipe(pipe)	return l}func (f *FieldInfo) ValidateJSON() (j FieldInfoJSON) {	j.Name = f.Name	j.Label = f.Label	j.Type = f.Type.String()	j.Required = f.Required	j.Unique = f.Unique	j.Minimum = f.Minimum	j.Maximum = f.Maximum	j.Decimal = f.Decimal	j.Default = f.DefaultValue()	j.Enums = f.EnumsValue()	j.Pattern = f.Pattern	j.Fields = make([]FieldInfoJSON, len(f.Fields))	for i, subField := range f.Fields {		j.Fields[i] = subField.ValidateJSON()	}	return}
 |