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

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