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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/iam/proto/v1alpha2/organization.proto
     3  // DO NOT EDIT!!!
     4  
     5  package organization
     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_common "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/common"
    23  	meta_service "github.com/cloudwan/edgelq-sdk/meta/resources/v1alpha2/service"
    24  	meta "github.com/cloudwan/goten-sdk/types/meta"
    25  	multi_region_policy "github.com/cloudwan/goten-sdk/types/multi_region_policy"
    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_common.PCR{}
    45  	_ = &meta_service.Service{}
    46  	_ = &meta.Meta{}
    47  	_ = &multi_region_policy.MultiRegionPolicy{}
    48  )
    49  
    50  type Organization_FieldMask struct {
    51  	Paths []Organization_FieldPath
    52  }
    53  
    54  func FullOrganization_FieldMask() *Organization_FieldMask {
    55  	res := &Organization_FieldMask{}
    56  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorName})
    57  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorTitle})
    58  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorParentOrganization})
    59  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorRootOrganization})
    60  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorAncestryPath})
    61  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorMetadata})
    62  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorMultiRegionPolicy})
    63  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorAllowedServices})
    64  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorBusinessTier})
    65  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorServiceTiers})
    66  	res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorServiceErrors})
    67  	return res
    68  }
    69  
    70  func (fieldMask *Organization_FieldMask) String() string {
    71  	if fieldMask == nil {
    72  		return "<nil>"
    73  	}
    74  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    75  	for _, path := range fieldMask.Paths {
    76  		pathsStr = append(pathsStr, path.String())
    77  	}
    78  	return strings.Join(pathsStr, ", ")
    79  }
    80  
    81  func (fieldMask *Organization_FieldMask) IsFull() bool {
    82  	if fieldMask == nil {
    83  		return false
    84  	}
    85  	presentSelectors := make([]bool, 11)
    86  	for _, path := range fieldMask.Paths {
    87  		if asFinal, ok := path.(*Organization_FieldTerminalPath); ok {
    88  			presentSelectors[int(asFinal.selector)] = true
    89  		}
    90  	}
    91  	for _, flag := range presentSelectors {
    92  		if !flag {
    93  			return false
    94  		}
    95  	}
    96  	return true
    97  }
    98  
    99  func (fieldMask *Organization_FieldMask) ProtoReflect() preflect.Message {
   100  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   101  		return ParseOrganization_FieldPath(raw)
   102  	})
   103  }
   104  
   105  func (fieldMask *Organization_FieldMask) ProtoMessage() {}
   106  
   107  func (fieldMask *Organization_FieldMask) Reset() {
   108  	if fieldMask != nil {
   109  		fieldMask.Paths = nil
   110  	}
   111  }
   112  
   113  func (fieldMask *Organization_FieldMask) Subtract(other *Organization_FieldMask) *Organization_FieldMask {
   114  	result := &Organization_FieldMask{}
   115  	removedSelectors := make([]bool, 11)
   116  	otherSubMasks := map[Organization_FieldPathSelector]gotenobject.FieldMask{
   117  		Organization_FieldPathSelectorMetadata:          &meta.Meta_FieldMask{},
   118  		Organization_FieldPathSelectorMultiRegionPolicy: &multi_region_policy.MultiRegionPolicy_FieldMask{},
   119  		Organization_FieldPathSelectorServiceTiers:      &iam_common.ServiceBusinessTier_FieldMask{},
   120  	}
   121  	mySubMasks := map[Organization_FieldPathSelector]gotenobject.FieldMask{
   122  		Organization_FieldPathSelectorMetadata:          &meta.Meta_FieldMask{},
   123  		Organization_FieldPathSelectorMultiRegionPolicy: &multi_region_policy.MultiRegionPolicy_FieldMask{},
   124  		Organization_FieldPathSelectorServiceTiers:      &iam_common.ServiceBusinessTier_FieldMask{},
   125  	}
   126  
   127  	for _, path := range other.GetPaths() {
   128  		switch tp := path.(type) {
   129  		case *Organization_FieldTerminalPath:
   130  			removedSelectors[int(tp.selector)] = true
   131  		case *Organization_FieldSubPath:
   132  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   133  		}
   134  	}
   135  	for _, path := range fieldMask.GetPaths() {
   136  		if !removedSelectors[int(path.Selector())] {
   137  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   138  				if tp, ok := path.(*Organization_FieldTerminalPath); ok {
   139  					switch tp.selector {
   140  					case Organization_FieldPathSelectorMetadata:
   141  						mySubMasks[Organization_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   142  					case Organization_FieldPathSelectorMultiRegionPolicy:
   143  						mySubMasks[Organization_FieldPathSelectorMultiRegionPolicy] = multi_region_policy.FullMultiRegionPolicy_FieldMask()
   144  					case Organization_FieldPathSelectorServiceTiers:
   145  						mySubMasks[Organization_FieldPathSelectorServiceTiers] = iam_common.FullServiceBusinessTier_FieldMask()
   146  					}
   147  				} else if tp, ok := path.(*Organization_FieldSubPath); ok {
   148  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   149  				}
   150  			} else {
   151  				result.Paths = append(result.Paths, path)
   152  			}
   153  		}
   154  	}
   155  	for selector, mySubMask := range mySubMasks {
   156  		if mySubMask.PathsCount() > 0 {
   157  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   158  				result.Paths = append(result.Paths, &Organization_FieldSubPath{selector: selector, subPath: allowedPath})
   159  			}
   160  		}
   161  	}
   162  
   163  	if len(result.Paths) == 0 {
   164  		return nil
   165  	}
   166  	return result
   167  }
   168  
   169  func (fieldMask *Organization_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   170  	return fieldMask.Subtract(other.(*Organization_FieldMask))
   171  }
   172  
   173  // FilterInputFields generates copy of field paths with output_only field paths removed
   174  func (fieldMask *Organization_FieldMask) FilterInputFields() *Organization_FieldMask {
   175  	result := &Organization_FieldMask{}
   176  	for _, path := range fieldMask.Paths {
   177  		switch path.Selector() {
   178  		case Organization_FieldPathSelectorMetadata:
   179  			if _, ok := path.(*Organization_FieldTerminalPath); ok {
   180  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   181  					result.Paths = append(result.Paths, &Organization_FieldSubPath{selector: path.Selector(), subPath: subpath})
   182  				}
   183  			} else if sub, ok := path.(*Organization_FieldSubPath); ok {
   184  				selectedMask := &meta.Meta_FieldMask{
   185  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   186  				}
   187  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   188  					result.Paths = append(result.Paths, &Organization_FieldSubPath{selector: Organization_FieldPathSelectorMetadata, subPath: allowedPath})
   189  				}
   190  			}
   191  		default:
   192  			result.Paths = append(result.Paths, path)
   193  		}
   194  	}
   195  	return result
   196  }
   197  
   198  // ToFieldMask is used for proto conversions
   199  func (fieldMask *Organization_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   200  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   201  	for _, path := range fieldMask.Paths {
   202  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   203  	}
   204  	return protoFieldMask
   205  }
   206  
   207  func (fieldMask *Organization_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   208  	if fieldMask == nil {
   209  		return status.Error(codes.Internal, "target field mask is nil")
   210  	}
   211  	fieldMask.Paths = make([]Organization_FieldPath, 0, len(protoFieldMask.Paths))
   212  	for _, strPath := range protoFieldMask.Paths {
   213  		path, err := ParseOrganization_FieldPath(strPath)
   214  		if err != nil {
   215  			return err
   216  		}
   217  		fieldMask.Paths = append(fieldMask.Paths, path)
   218  	}
   219  	return nil
   220  }
   221  
   222  // implement methods required by customType
   223  func (fieldMask Organization_FieldMask) Marshal() ([]byte, error) {
   224  	protoFieldMask := fieldMask.ToProtoFieldMask()
   225  	return proto.Marshal(protoFieldMask)
   226  }
   227  
   228  func (fieldMask *Organization_FieldMask) Unmarshal(data []byte) error {
   229  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   230  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   231  		return err
   232  	}
   233  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   234  		return err
   235  	}
   236  	return nil
   237  }
   238  
   239  func (fieldMask *Organization_FieldMask) Size() int {
   240  	return proto.Size(fieldMask.ToProtoFieldMask())
   241  }
   242  
   243  func (fieldMask Organization_FieldMask) MarshalJSON() ([]byte, error) {
   244  	return json.Marshal(fieldMask.ToProtoFieldMask())
   245  }
   246  
   247  func (fieldMask *Organization_FieldMask) UnmarshalJSON(data []byte) error {
   248  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   249  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   250  		return err
   251  	}
   252  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   253  		return err
   254  	}
   255  	return nil
   256  }
   257  
   258  func (fieldMask *Organization_FieldMask) AppendPath(path Organization_FieldPath) {
   259  	fieldMask.Paths = append(fieldMask.Paths, path)
   260  }
   261  
   262  func (fieldMask *Organization_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   263  	fieldMask.Paths = append(fieldMask.Paths, path.(Organization_FieldPath))
   264  }
   265  
   266  func (fieldMask *Organization_FieldMask) GetPaths() []Organization_FieldPath {
   267  	if fieldMask == nil {
   268  		return nil
   269  	}
   270  	return fieldMask.Paths
   271  }
   272  
   273  func (fieldMask *Organization_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   274  	if fieldMask == nil {
   275  		return nil
   276  	}
   277  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   278  	for _, path := range fieldMask.Paths {
   279  		rawPaths = append(rawPaths, path)
   280  	}
   281  	return rawPaths
   282  }
   283  
   284  func (fieldMask *Organization_FieldMask) SetFromCliFlag(raw string) error {
   285  	path, err := ParseOrganization_FieldPath(raw)
   286  	if err != nil {
   287  		return err
   288  	}
   289  	fieldMask.Paths = append(fieldMask.Paths, path)
   290  	return nil
   291  }
   292  
   293  func (fieldMask *Organization_FieldMask) Set(target, source *Organization) {
   294  	for _, path := range fieldMask.Paths {
   295  		val, _ := path.GetSingle(source)
   296  		// if val is nil, then field does not exist in source, skip
   297  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   298  		if val != nil {
   299  			path.WithIValue(val).SetTo(&target)
   300  		}
   301  	}
   302  }
   303  
   304  func (fieldMask *Organization_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   305  	fieldMask.Set(target.(*Organization), source.(*Organization))
   306  }
   307  
   308  func (fieldMask *Organization_FieldMask) Project(source *Organization) *Organization {
   309  	if source == nil {
   310  		return nil
   311  	}
   312  	if fieldMask == nil {
   313  		return source
   314  	}
   315  	result := &Organization{}
   316  	metadataMask := &meta.Meta_FieldMask{}
   317  	wholeMetadataAccepted := false
   318  	multiRegionPolicyMask := &multi_region_policy.MultiRegionPolicy_FieldMask{}
   319  	wholeMultiRegionPolicyAccepted := false
   320  	serviceTiersMask := &iam_common.ServiceBusinessTier_FieldMask{}
   321  	wholeServiceTiersAccepted := false
   322  	var serviceErrorsMapKeys []string
   323  	wholeServiceErrorsAccepted := false
   324  
   325  	for _, p := range fieldMask.Paths {
   326  		switch tp := p.(type) {
   327  		case *Organization_FieldTerminalPath:
   328  			switch tp.selector {
   329  			case Organization_FieldPathSelectorName:
   330  				result.Name = source.Name
   331  			case Organization_FieldPathSelectorTitle:
   332  				result.Title = source.Title
   333  			case Organization_FieldPathSelectorParentOrganization:
   334  				result.ParentOrganization = source.ParentOrganization
   335  			case Organization_FieldPathSelectorRootOrganization:
   336  				result.RootOrganization = source.RootOrganization
   337  			case Organization_FieldPathSelectorAncestryPath:
   338  				result.AncestryPath = source.AncestryPath
   339  			case Organization_FieldPathSelectorMetadata:
   340  				result.Metadata = source.Metadata
   341  				wholeMetadataAccepted = true
   342  			case Organization_FieldPathSelectorMultiRegionPolicy:
   343  				result.MultiRegionPolicy = source.MultiRegionPolicy
   344  				wholeMultiRegionPolicyAccepted = true
   345  			case Organization_FieldPathSelectorAllowedServices:
   346  				result.AllowedServices = source.AllowedServices
   347  			case Organization_FieldPathSelectorBusinessTier:
   348  				result.BusinessTier = source.BusinessTier
   349  			case Organization_FieldPathSelectorServiceTiers:
   350  				result.ServiceTiers = source.ServiceTiers
   351  				wholeServiceTiersAccepted = true
   352  			case Organization_FieldPathSelectorServiceErrors:
   353  				result.ServiceErrors = source.ServiceErrors
   354  				wholeServiceErrorsAccepted = true
   355  			}
   356  		case *Organization_FieldSubPath:
   357  			switch tp.selector {
   358  			case Organization_FieldPathSelectorMetadata:
   359  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   360  			case Organization_FieldPathSelectorMultiRegionPolicy:
   361  				multiRegionPolicyMask.AppendPath(tp.subPath.(multi_region_policy.MultiRegionPolicy_FieldPath))
   362  			case Organization_FieldPathSelectorServiceTiers:
   363  				serviceTiersMask.AppendPath(tp.subPath.(iam_common.ServiceBusinessTier_FieldPath))
   364  			}
   365  		case *Organization_FieldPathMap:
   366  			switch tp.selector {
   367  			case Organization_FieldPathSelectorServiceErrors:
   368  				serviceErrorsMapKeys = append(serviceErrorsMapKeys, tp.key)
   369  			}
   370  		}
   371  	}
   372  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   373  		result.Metadata = metadataMask.Project(source.GetMetadata())
   374  	}
   375  	if wholeMultiRegionPolicyAccepted == false && len(multiRegionPolicyMask.Paths) > 0 {
   376  		result.MultiRegionPolicy = multiRegionPolicyMask.Project(source.GetMultiRegionPolicy())
   377  	}
   378  	if wholeServiceTiersAccepted == false && len(serviceTiersMask.Paths) > 0 {
   379  		for _, sourceItem := range source.GetServiceTiers() {
   380  			result.ServiceTiers = append(result.ServiceTiers, serviceTiersMask.Project(sourceItem))
   381  		}
   382  	}
   383  	if wholeServiceErrorsAccepted == false && len(serviceErrorsMapKeys) > 0 && source.GetServiceErrors() != nil {
   384  		copiedMap := map[string]*iam_common.ServiceErrors{}
   385  		sourceMap := source.GetServiceErrors()
   386  		for _, key := range serviceErrorsMapKeys {
   387  			copiedMap[key] = sourceMap[key]
   388  		}
   389  		result.ServiceErrors = copiedMap
   390  	}
   391  	return result
   392  }
   393  
   394  func (fieldMask *Organization_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   395  	return fieldMask.Project(source.(*Organization))
   396  }
   397  
   398  func (fieldMask *Organization_FieldMask) PathsCount() int {
   399  	if fieldMask == nil {
   400  		return 0
   401  	}
   402  	return len(fieldMask.Paths)
   403  }