goproto

package
v3.33.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package goproto implements conversions from well-known golang/profobuf types.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func GoFieldsPaths

func GoFieldsPaths(pb *field_mask.FieldMask, v any) []string

GoFieldsPaths converts protobuf FieldMask paths to Go fields paths.

This implementation does not support separation by ",", but only paths separated by ".".

Example
package main

import (
	"fmt"

	"go.thethings.network/lorawan-stack/v3/pkg/goproto"
	"google.golang.org/genproto/protobuf/field_mask"
)

func main() {
	type cityDetails struct {
		Name string `protobuf:"name=name_city"`
	}

	type place struct {
		NameOfTheRegion string `protobuf:"name=name_region"`

		CityDetails cityDetails `protobuf:"bytes,name=city"`
	}

	london := place{
		CityDetails: cityDetails{Name: "London"},
	}
	holland := place{
		NameOfTheRegion: "Holland",
	}

	fields := goproto.GoFieldsPaths(&field_mask.FieldMask{
		Paths: []string{"city.name_city"},
	}, london)
	fmt.Println(fields)

	fields = goproto.GoFieldsPaths(&field_mask.FieldMask{
		Paths: []string{"name_region"},
	}, holland)
	fmt.Println(fields)

}
Output:

[CityDetails.Name]
[NameOfTheRegion]

func Interface

func Interface(v *structpb.Value, opts ...Option) (any, error)

Interface returns the Value proto as an interface{}.

func List

func List(s []any, opts ...Option) (*structpb.ListValue, error)

List returns the slice as a ListValue proto.

func Map

func Map(p *structpb.Struct, opts ...Option) (map[string]any, error)

Map returns the Struct proto as a map[string]interface{}.

func Slice

func Slice(l *structpb.ListValue, opts ...Option) ([]any, error)

Slice returns the ListValue proto as a []interface{}.

func Struct

func Struct(m map[string]any, opts ...Option) (*structpb.Struct, error)

Struct returns the map as a Struct proto.

func ValidateStruct added in v3.25.0

func ValidateStruct(st *structpb.Struct) []string

ValidateStruct recursively verifies if the struct contains any invalid values (NaN, -Infinity, Infinity) and emits warning messages for such fields.

func Value

func Value(v any, opts ...Option) (*structpb.Value, error)

Value returns the value as a Value proto.

Types

type Option added in v3.21.0

type Option func(*serializationState)

Option represents a serialization option.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL