func buildMessageField()

in api-generator/main.go [440:481]


func buildMessageField(field *descriptor.FieldDescriptorProto) (*ptype.Field, error) {
	var oneofIndex int32
	if field.OneofIndex != nil {
		oneofIndex = *field.OneofIndex + 1
	}

	var typeURL string
	if field.TypeName != nil {
		typeURL = fmt.Sprintf("type.googleapis.com/%s", *field.TypeName)
	}

	options := make([]*ptype.Option, 0)
	options, err := buildFieldOptions(field.Options, options)
	if err != nil {
		return nil, errors.Wrap(err, "could not process field options")
	}

	kind := ptype.Field_TYPE_UNKNOWN
	if field.Type != nil {
		kind = ptype.Field_Kind(*field.Type)
	}

	cardinality := ptype.Field_CARDINALITY_UNKNOWN
	if field.Label != nil {
		cardinality = ptype.Field_Cardinality(*field.Label)
	}

	result := &ptype.Field{
		Kind:         kind,
		Cardinality:  cardinality,
		Number:       field.GetNumber(),
		Name:         field.GetName(),
		TypeUrl:      typeURL,
		OneofIndex:   oneofIndex,
		Packed:       field.Options.GetPacked(),
		Options:      options,
		JsonName:     field.GetJsonName(),
		DefaultValue: field.GetDefaultValue(),
	}

	return result, nil
}