82 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
package swagger
 | 
						|
 | 
						|
import (
 | 
						|
	"reflect"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
func (prop *ModelProperty) setDescription(field reflect.StructField) {
 | 
						|
	if tag := field.Tag.Get("description"); tag != "" {
 | 
						|
		prop.Description = tag
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (prop *ModelProperty) setDefaultValue(field reflect.StructField) {
 | 
						|
	if tag := field.Tag.Get("default"); tag != "" {
 | 
						|
		prop.DefaultValue = Special(tag)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (prop *ModelProperty) setEnumValues(field reflect.StructField) {
 | 
						|
	// We use | to separate the enum values.  This value is chosen
 | 
						|
	// since its unlikely to be useful in actual enumeration values.
 | 
						|
	if tag := field.Tag.Get("enum"); tag != "" {
 | 
						|
		prop.Enum = strings.Split(tag, "|")
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (prop *ModelProperty) setMaximum(field reflect.StructField) {
 | 
						|
	if tag := field.Tag.Get("maximum"); tag != "" {
 | 
						|
		prop.Maximum = tag
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (prop *ModelProperty) setType(field reflect.StructField) {
 | 
						|
	if tag := field.Tag.Get("type"); tag != "" {
 | 
						|
		// Check if the first two characters of the type tag are
 | 
						|
		// intended to emulate slice/array behaviour.
 | 
						|
		//
 | 
						|
		// If type is intended to be a slice/array then add the
 | 
						|
		// overriden type to the array item instead of the main property
 | 
						|
		if len(tag) > 2 && tag[0:2] == "[]" {
 | 
						|
			pType := "array"
 | 
						|
			prop.Type = &pType
 | 
						|
			prop.Items = new(Item)
 | 
						|
 | 
						|
			iType := tag[2:]
 | 
						|
			prop.Items.Type = &iType
 | 
						|
			return
 | 
						|
		}
 | 
						|
 | 
						|
		prop.Type = &tag
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (prop *ModelProperty) setMinimum(field reflect.StructField) {
 | 
						|
	if tag := field.Tag.Get("minimum"); tag != "" {
 | 
						|
		prop.Minimum = tag
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (prop *ModelProperty) setUniqueItems(field reflect.StructField) {
 | 
						|
	tag := field.Tag.Get("unique")
 | 
						|
	switch tag {
 | 
						|
	case "true":
 | 
						|
		v := true
 | 
						|
		prop.UniqueItems = &v
 | 
						|
	case "false":
 | 
						|
		v := false
 | 
						|
		prop.UniqueItems = &v
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (prop *ModelProperty) setPropertyMetadata(field reflect.StructField) {
 | 
						|
	prop.setDescription(field)
 | 
						|
	prop.setEnumValues(field)
 | 
						|
	prop.setMinimum(field)
 | 
						|
	prop.setMaximum(field)
 | 
						|
	prop.setUniqueItems(field)
 | 
						|
	prop.setDefaultValue(field)
 | 
						|
	prop.setType(field)
 | 
						|
}
 |