github.com/cloudwan/edgelq-sdk@v1.15.4/logging/resources/v1alpha2/log_descriptor/log_descriptor.pb.fieldmask.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/logging/proto/v1alpha2/log_descriptor.proto
     3  // DO NOT EDIT!!!
     4  
     5  package log_descriptor
     6  
     7  import (
     8  	"encoding/json"
     9  	"strings"
    10  
    11  	"google.golang.org/grpc/codes"
    12  	"google.golang.org/grpc/status"
    13  	"google.golang.org/protobuf/proto"
    14  	preflect "google.golang.org/protobuf/reflect/protoreflect"
    15  	googlefieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    16  
    17  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    18  )
    19  
    20  // proto imports
    21  import (
    22  	iam_organization "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/organization"
    23  	iam_project "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/project"
    24  	common "github.com/cloudwan/edgelq-sdk/logging/resources/v1alpha2/common"
    25  	meta "github.com/cloudwan/goten-sdk/types/meta"
    26  )
    27  
    28  // ensure the imports are used
    29  var (
    30  	_ = new(json.Marshaler)
    31  	_ = strings.Builder{}
    32  
    33  	_ = codes.NotFound
    34  	_ = status.Status{}
    35  	_ = new(proto.Message)
    36  	_ = new(preflect.Message)
    37  	_ = googlefieldmaskpb.FieldMask{}
    38  
    39  	_ = new(gotenobject.FieldMask)
    40  )
    41  
    42  // make sure we're using proto imports
    43  var (
    44  	_ = &iam_organization.Organization{}
    45  	_ = &iam_project.Project{}
    46  	_ = &common.LabelDescriptor{}
    47  	_ = &meta.Meta{}
    48  )
    49  
    50  type LogDescriptor_FieldMask struct {
    51  	Paths []LogDescriptor_FieldPath
    52  }
    53  
    54  func FullLogDescriptor_FieldMask() *LogDescriptor_FieldMask {
    55  	res := &LogDescriptor_FieldMask{}
    56  	res.Paths = append(res.Paths, &LogDescriptor_FieldTerminalPath{selector: LogDescriptor_FieldPathSelectorName})
    57  	res.Paths = append(res.Paths, &LogDescriptor_FieldTerminalPath{selector: LogDescriptor_FieldPathSelectorDisplayName})
    58  	res.Paths = append(res.Paths, &LogDescriptor_FieldTerminalPath{selector: LogDescriptor_FieldPathSelectorDescription})
    59  	res.Paths = append(res.Paths, &LogDescriptor_FieldTerminalPath{selector: LogDescriptor_FieldPathSelectorLabels})
    60  	res.Paths = append(res.Paths, &LogDescriptor_FieldTerminalPath{selector: LogDescriptor_FieldPathSelectorPromotedLabelKeySets})
    61  	res.Paths = append(res.Paths, &LogDescriptor_FieldTerminalPath{selector: LogDescriptor_FieldPathSelectorMetadata})
    62  	return res
    63  }
    64  
    65  func (fieldMask *LogDescriptor_FieldMask) String() string {
    66  	if fieldMask == nil {
    67  		return "<nil>"
    68  	}
    69  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    70  	for _, path := range fieldMask.Paths {
    71  		pathsStr = append(pathsStr, path.String())
    72  	}
    73  	return strings.Join(pathsStr, ", ")
    74  }
    75  
    76  func (fieldMask *LogDescriptor_FieldMask) IsFull() bool {
    77  	if fieldMask == nil {
    78  		return false
    79  	}
    80  	presentSelectors := make([]bool, 6)
    81  	for _, path := range fieldMask.Paths {
    82  		if asFinal, ok := path.(*LogDescriptor_FieldTerminalPath); ok {
    83  			presentSelectors[int(asFinal.selector)] = true
    84  		}
    85  	}
    86  	for _, flag := range presentSelectors {
    87  		if !flag {
    88  			return false
    89  		}
    90  	}
    91  	return true
    92  }
    93  
    94  func (fieldMask *LogDescriptor_FieldMask) ProtoReflect() preflect.Message {
    95  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
    96  		return ParseLogDescriptor_FieldPath(raw)
    97  	})
    98  }
    99  
   100  func (fieldMask *LogDescriptor_FieldMask) ProtoMessage() {}
   101  
   102  func (fieldMask *LogDescriptor_FieldMask) Reset() {
   103  	if fieldMask != nil {
   104  		fieldMask.Paths = nil
   105  	}
   106  }
   107  
   108  func (fieldMask *LogDescriptor_FieldMask) Subtract(other *LogDescriptor_FieldMask) *LogDescriptor_FieldMask {
   109  	result := &LogDescriptor_FieldMask{}
   110  	removedSelectors := make([]bool, 6)
   111  	otherSubMasks := map[LogDescriptor_FieldPathSelector]gotenobject.FieldMask{
   112  		LogDescriptor_FieldPathSelectorLabels:               &common.LabelDescriptor_FieldMask{},
   113  		LogDescriptor_FieldPathSelectorPromotedLabelKeySets: &common.LabelKeySet_FieldMask{},
   114  		LogDescriptor_FieldPathSelectorMetadata:             &meta.Meta_FieldMask{},
   115  	}
   116  	mySubMasks := map[LogDescriptor_FieldPathSelector]gotenobject.FieldMask{
   117  		LogDescriptor_FieldPathSelectorLabels:               &common.LabelDescriptor_FieldMask{},
   118  		LogDescriptor_FieldPathSelectorPromotedLabelKeySets: &common.LabelKeySet_FieldMask{},
   119  		LogDescriptor_FieldPathSelectorMetadata:             &meta.Meta_FieldMask{},
   120  	}
   121  
   122  	for _, path := range other.GetPaths() {
   123  		switch tp := path.(type) {
   124  		case *LogDescriptor_FieldTerminalPath:
   125  			removedSelectors[int(tp.selector)] = true
   126  		case *LogDescriptor_FieldSubPath:
   127  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   128  		}
   129  	}
   130  	for _, path := range fieldMask.GetPaths() {
   131  		if !removedSelectors[int(path.Selector())] {
   132  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   133  				if tp, ok := path.(*LogDescriptor_FieldTerminalPath); ok {
   134  					switch tp.selector {
   135  					case LogDescriptor_FieldPathSelectorLabels:
   136  						mySubMasks[LogDescriptor_FieldPathSelectorLabels] = common.FullLabelDescriptor_FieldMask()
   137  					case LogDescriptor_FieldPathSelectorPromotedLabelKeySets:
   138  						mySubMasks[LogDescriptor_FieldPathSelectorPromotedLabelKeySets] = common.FullLabelKeySet_FieldMask()
   139  					case LogDescriptor_FieldPathSelectorMetadata:
   140  						mySubMasks[LogDescriptor_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   141  					}
   142  				} else if tp, ok := path.(*LogDescriptor_FieldSubPath); ok {
   143  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   144  				}
   145  			} else {
   146  				result.Paths = append(result.Paths, path)
   147  			}
   148  		}
   149  	}
   150  	for selector, mySubMask := range mySubMasks {
   151  		if mySubMask.PathsCount() > 0 {
   152  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   153  				result.Paths = append(result.Paths, &LogDescriptor_FieldSubPath{selector: selector, subPath: allowedPath})
   154  			}
   155  		}
   156  	}
   157  
   158  	if len(result.Paths) == 0 {
   159  		return nil
   160  	}
   161  	return result
   162  }
   163  
   164  func (fieldMask *LogDescriptor_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   165  	return fieldMask.Subtract(other.(*LogDescriptor_FieldMask))
   166  }
   167  
   168  // FilterInputFields generates copy of field paths with output_only field paths removed
   169  func (fieldMask *LogDescriptor_FieldMask) FilterInputFields() *LogDescriptor_FieldMask {
   170  	result := &LogDescriptor_FieldMask{}
   171  	for _, path := range fieldMask.Paths {
   172  		switch path.Selector() {
   173  		case LogDescriptor_FieldPathSelectorMetadata:
   174  			if _, ok := path.(*LogDescriptor_FieldTerminalPath); ok {
   175  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   176  					result.Paths = append(result.Paths, &LogDescriptor_FieldSubPath{selector: path.Selector(), subPath: subpath})
   177  				}
   178  			} else if sub, ok := path.(*LogDescriptor_FieldSubPath); ok {
   179  				selectedMask := &meta.Meta_FieldMask{
   180  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   181  				}
   182  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   183  					result.Paths = append(result.Paths, &LogDescriptor_FieldSubPath{selector: LogDescriptor_FieldPathSelectorMetadata, subPath: allowedPath})
   184  				}
   185  			}
   186  		default:
   187  			result.Paths = append(result.Paths, path)
   188  		}
   189  	}
   190  	return result
   191  }
   192  
   193  // ToFieldMask is used for proto conversions
   194  func (fieldMask *LogDescriptor_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   195  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   196  	for _, path := range fieldMask.Paths {
   197  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   198  	}
   199  	return protoFieldMask
   200  }
   201  
   202  func (fieldMask *LogDescriptor_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   203  	if fieldMask == nil {
   204  		return status.Error(codes.Internal, "target field mask is nil")
   205  	}
   206  	fieldMask.Paths = make([]LogDescriptor_FieldPath, 0, len(protoFieldMask.Paths))
   207  	for _, strPath := range protoFieldMask.Paths {
   208  		path, err := ParseLogDescriptor_FieldPath(strPath)
   209  		if err != nil {
   210  			return err
   211  		}
   212  		fieldMask.Paths = append(fieldMask.Paths, path)
   213  	}
   214  	return nil
   215  }
   216  
   217  // implement methods required by customType
   218  func (fieldMask LogDescriptor_FieldMask) Marshal() ([]byte, error) {
   219  	protoFieldMask := fieldMask.ToProtoFieldMask()
   220  	return proto.Marshal(protoFieldMask)
   221  }
   222  
   223  func (fieldMask *LogDescriptor_FieldMask) Unmarshal(data []byte) error {
   224  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   225  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   226  		return err
   227  	}
   228  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   229  		return err
   230  	}
   231  	return nil
   232  }
   233  
   234  func (fieldMask *LogDescriptor_FieldMask) Size() int {
   235  	return proto.Size(fieldMask.ToProtoFieldMask())
   236  }
   237  
   238  func (fieldMask LogDescriptor_FieldMask) MarshalJSON() ([]byte, error) {
   239  	return json.Marshal(fieldMask.ToProtoFieldMask())
   240  }
   241  
   242  func (fieldMask *LogDescriptor_FieldMask) UnmarshalJSON(data []byte) error {
   243  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   244  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   245  		return err
   246  	}
   247  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   248  		return err
   249  	}
   250  	return nil
   251  }
   252  
   253  func (fieldMask *LogDescriptor_FieldMask) AppendPath(path LogDescriptor_FieldPath) {
   254  	fieldMask.Paths = append(fieldMask.Paths, path)
   255  }
   256  
   257  func (fieldMask *LogDescriptor_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   258  	fieldMask.Paths = append(fieldMask.Paths, path.(LogDescriptor_FieldPath))
   259  }
   260  
   261  func (fieldMask *LogDescriptor_FieldMask) GetPaths() []LogDescriptor_FieldPath {
   262  	if fieldMask == nil {
   263  		return nil
   264  	}
   265  	return fieldMask.Paths
   266  }
   267  
   268  func (fieldMask *LogDescriptor_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   269  	if fieldMask == nil {
   270  		return nil
   271  	}
   272  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   273  	for _, path := range fieldMask.Paths {
   274  		rawPaths = append(rawPaths, path)
   275  	}
   276  	return rawPaths
   277  }
   278  
   279  func (fieldMask *LogDescriptor_FieldMask) SetFromCliFlag(raw string) error {
   280  	path, err := ParseLogDescriptor_FieldPath(raw)
   281  	if err != nil {
   282  		return err
   283  	}
   284  	fieldMask.Paths = append(fieldMask.Paths, path)
   285  	return nil
   286  }
   287  
   288  func (fieldMask *LogDescriptor_FieldMask) Set(target, source *LogDescriptor) {
   289  	for _, path := range fieldMask.Paths {
   290  		val, _ := path.GetSingle(source)
   291  		// if val is nil, then field does not exist in source, skip
   292  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   293  		if val != nil {
   294  			path.WithIValue(val).SetTo(&target)
   295  		}
   296  	}
   297  }
   298  
   299  func (fieldMask *LogDescriptor_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   300  	fieldMask.Set(target.(*LogDescriptor), source.(*LogDescriptor))
   301  }
   302  
   303  func (fieldMask *LogDescriptor_FieldMask) Project(source *LogDescriptor) *LogDescriptor {
   304  	if source == nil {
   305  		return nil
   306  	}
   307  	if fieldMask == nil {
   308  		return source
   309  	}
   310  	result := &LogDescriptor{}
   311  	labelsMask := &common.LabelDescriptor_FieldMask{}
   312  	wholeLabelsAccepted := false
   313  	promotedLabelKeySetsMask := &common.LabelKeySet_FieldMask{}
   314  	wholePromotedLabelKeySetsAccepted := false
   315  	metadataMask := &meta.Meta_FieldMask{}
   316  	wholeMetadataAccepted := false
   317  
   318  	for _, p := range fieldMask.Paths {
   319  		switch tp := p.(type) {
   320  		case *LogDescriptor_FieldTerminalPath:
   321  			switch tp.selector {
   322  			case LogDescriptor_FieldPathSelectorName:
   323  				result.Name = source.Name
   324  			case LogDescriptor_FieldPathSelectorDisplayName:
   325  				result.DisplayName = source.DisplayName
   326  			case LogDescriptor_FieldPathSelectorDescription:
   327  				result.Description = source.Description
   328  			case LogDescriptor_FieldPathSelectorLabels:
   329  				result.Labels = source.Labels
   330  				wholeLabelsAccepted = true
   331  			case LogDescriptor_FieldPathSelectorPromotedLabelKeySets:
   332  				result.PromotedLabelKeySets = source.PromotedLabelKeySets
   333  				wholePromotedLabelKeySetsAccepted = true
   334  			case LogDescriptor_FieldPathSelectorMetadata:
   335  				result.Metadata = source.Metadata
   336  				wholeMetadataAccepted = true
   337  			}
   338  		case *LogDescriptor_FieldSubPath:
   339  			switch tp.selector {
   340  			case LogDescriptor_FieldPathSelectorLabels:
   341  				labelsMask.AppendPath(tp.subPath.(common.LabelDescriptor_FieldPath))
   342  			case LogDescriptor_FieldPathSelectorPromotedLabelKeySets:
   343  				promotedLabelKeySetsMask.AppendPath(tp.subPath.(common.LabelKeySet_FieldPath))
   344  			case LogDescriptor_FieldPathSelectorMetadata:
   345  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   346  			}
   347  		}
   348  	}
   349  	if wholeLabelsAccepted == false && len(labelsMask.Paths) > 0 {
   350  		for _, sourceItem := range source.GetLabels() {
   351  			result.Labels = append(result.Labels, labelsMask.Project(sourceItem))
   352  		}
   353  	}
   354  	if wholePromotedLabelKeySetsAccepted == false && len(promotedLabelKeySetsMask.Paths) > 0 {
   355  		for _, sourceItem := range source.GetPromotedLabelKeySets() {
   356  			result.PromotedLabelKeySets = append(result.PromotedLabelKeySets, promotedLabelKeySetsMask.Project(sourceItem))
   357  		}
   358  	}
   359  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   360  		result.Metadata = metadataMask.Project(source.GetMetadata())
   361  	}
   362  	return result
   363  }
   364  
   365  func (fieldMask *LogDescriptor_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   366  	return fieldMask.Project(source.(*LogDescriptor))
   367  }
   368  
   369  func (fieldMask *LogDescriptor_FieldMask) PathsCount() int {
   370  	if fieldMask == nil {
   371  		return 0
   372  	}
   373  	return len(fieldMask.Paths)
   374  }