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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1/plan_assignment.proto
     3  // DO NOT EDIT!!!
     4  
     5  package plan_assignment
     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/v1/organization"
    23  	iam_project "github.com/cloudwan/edgelq-sdk/iam/resources/v1/project"
    24  	accepted_plan "github.com/cloudwan/edgelq-sdk/limits/resources/v1/accepted_plan"
    25  	common "github.com/cloudwan/edgelq-sdk/limits/resources/v1/common"
    26  	plan "github.com/cloudwan/edgelq-sdk/limits/resources/v1/plan"
    27  	meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service"
    28  	meta "github.com/cloudwan/goten-sdk/types/meta"
    29  )
    30  
    31  // ensure the imports are used
    32  var (
    33  	_ = new(json.Marshaler)
    34  	_ = strings.Builder{}
    35  
    36  	_ = codes.NotFound
    37  	_ = status.Status{}
    38  	_ = new(proto.Message)
    39  	_ = new(preflect.Message)
    40  	_ = googlefieldmaskpb.FieldMask{}
    41  
    42  	_ = new(gotenobject.FieldMask)
    43  )
    44  
    45  // make sure we're using proto imports
    46  var (
    47  	_ = &iam_organization.Organization{}
    48  	_ = &iam_project.Project{}
    49  	_ = &accepted_plan.AcceptedPlan{}
    50  	_ = &common.RegionalPlanAssignment{}
    51  	_ = &plan.Plan{}
    52  	_ = &meta_service.Service{}
    53  	_ = &meta.Meta{}
    54  )
    55  
    56  type PlanAssignment_FieldMask struct {
    57  	Paths []PlanAssignment_FieldPath
    58  }
    59  
    60  func FullPlanAssignment_FieldMask() *PlanAssignment_FieldMask {
    61  	res := &PlanAssignment_FieldMask{}
    62  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorName})
    63  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorMetadata})
    64  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorDefaultRegionalPlan})
    65  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorService})
    66  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorRegionalPlanOverrides})
    67  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorExtensions})
    68  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorAllowances})
    69  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorAppliedRegions})
    70  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration})
    71  	res.Paths = append(res.Paths, &PlanAssignment_FieldTerminalPath{selector: PlanAssignment_FieldPathSelectorSource})
    72  	return res
    73  }
    74  
    75  func (fieldMask *PlanAssignment_FieldMask) String() string {
    76  	if fieldMask == nil {
    77  		return "<nil>"
    78  	}
    79  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    80  	for _, path := range fieldMask.Paths {
    81  		pathsStr = append(pathsStr, path.String())
    82  	}
    83  	return strings.Join(pathsStr, ", ")
    84  }
    85  
    86  func (fieldMask *PlanAssignment_FieldMask) IsFull() bool {
    87  	if fieldMask == nil {
    88  		return false
    89  	}
    90  	presentSelectors := make([]bool, 10)
    91  	for _, path := range fieldMask.Paths {
    92  		if asFinal, ok := path.(*PlanAssignment_FieldTerminalPath); ok {
    93  			presentSelectors[int(asFinal.selector)] = true
    94  		}
    95  	}
    96  	for _, flag := range presentSelectors {
    97  		if !flag {
    98  			return false
    99  		}
   100  	}
   101  	return true
   102  }
   103  
   104  func (fieldMask *PlanAssignment_FieldMask) ProtoReflect() preflect.Message {
   105  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   106  		return ParsePlanAssignment_FieldPath(raw)
   107  	})
   108  }
   109  
   110  func (fieldMask *PlanAssignment_FieldMask) ProtoMessage() {}
   111  
   112  func (fieldMask *PlanAssignment_FieldMask) Reset() {
   113  	if fieldMask != nil {
   114  		fieldMask.Paths = nil
   115  	}
   116  }
   117  
   118  func (fieldMask *PlanAssignment_FieldMask) Subtract(other *PlanAssignment_FieldMask) *PlanAssignment_FieldMask {
   119  	result := &PlanAssignment_FieldMask{}
   120  	removedSelectors := make([]bool, 10)
   121  	otherSubMasks := map[PlanAssignment_FieldPathSelector]gotenobject.FieldMask{
   122  		PlanAssignment_FieldPathSelectorMetadata:              &meta.Meta_FieldMask{},
   123  		PlanAssignment_FieldPathSelectorRegionalPlanOverrides: &common.RegionalPlanAssignment_FieldMask{},
   124  		PlanAssignment_FieldPathSelectorExtensions:            &common.Allowance_FieldMask{},
   125  		PlanAssignment_FieldPathSelectorAllowances:            &common.Allowance_FieldMask{},
   126  	}
   127  	mySubMasks := map[PlanAssignment_FieldPathSelector]gotenobject.FieldMask{
   128  		PlanAssignment_FieldPathSelectorMetadata:              &meta.Meta_FieldMask{},
   129  		PlanAssignment_FieldPathSelectorRegionalPlanOverrides: &common.RegionalPlanAssignment_FieldMask{},
   130  		PlanAssignment_FieldPathSelectorExtensions:            &common.Allowance_FieldMask{},
   131  		PlanAssignment_FieldPathSelectorAllowances:            &common.Allowance_FieldMask{},
   132  	}
   133  
   134  	for _, path := range other.GetPaths() {
   135  		switch tp := path.(type) {
   136  		case *PlanAssignment_FieldTerminalPath:
   137  			removedSelectors[int(tp.selector)] = true
   138  		case *PlanAssignment_FieldSubPath:
   139  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   140  		}
   141  	}
   142  	for _, path := range fieldMask.GetPaths() {
   143  		if !removedSelectors[int(path.Selector())] {
   144  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   145  				if tp, ok := path.(*PlanAssignment_FieldTerminalPath); ok {
   146  					switch tp.selector {
   147  					case PlanAssignment_FieldPathSelectorMetadata:
   148  						mySubMasks[PlanAssignment_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   149  					case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   150  						mySubMasks[PlanAssignment_FieldPathSelectorRegionalPlanOverrides] = common.FullRegionalPlanAssignment_FieldMask()
   151  					case PlanAssignment_FieldPathSelectorExtensions:
   152  						mySubMasks[PlanAssignment_FieldPathSelectorExtensions] = common.FullAllowance_FieldMask()
   153  					case PlanAssignment_FieldPathSelectorAllowances:
   154  						mySubMasks[PlanAssignment_FieldPathSelectorAllowances] = common.FullAllowance_FieldMask()
   155  					}
   156  				} else if tp, ok := path.(*PlanAssignment_FieldSubPath); ok {
   157  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   158  				}
   159  			} else {
   160  				result.Paths = append(result.Paths, path)
   161  			}
   162  		}
   163  	}
   164  	for selector, mySubMask := range mySubMasks {
   165  		if mySubMask.PathsCount() > 0 {
   166  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   167  				result.Paths = append(result.Paths, &PlanAssignment_FieldSubPath{selector: selector, subPath: allowedPath})
   168  			}
   169  		}
   170  	}
   171  
   172  	if len(result.Paths) == 0 {
   173  		return nil
   174  	}
   175  	return result
   176  }
   177  
   178  func (fieldMask *PlanAssignment_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   179  	return fieldMask.Subtract(other.(*PlanAssignment_FieldMask))
   180  }
   181  
   182  // FilterInputFields generates copy of field paths with output_only field paths removed
   183  func (fieldMask *PlanAssignment_FieldMask) FilterInputFields() *PlanAssignment_FieldMask {
   184  	result := &PlanAssignment_FieldMask{}
   185  	for _, path := range fieldMask.Paths {
   186  		switch path.Selector() {
   187  		case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   188  		case PlanAssignment_FieldPathSelectorService:
   189  		case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   190  		case PlanAssignment_FieldPathSelectorExtensions:
   191  		case PlanAssignment_FieldPathSelectorAllowances:
   192  		case PlanAssignment_FieldPathSelectorAppliedRegions:
   193  		case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   194  		case PlanAssignment_FieldPathSelectorMetadata:
   195  			if _, ok := path.(*PlanAssignment_FieldTerminalPath); ok {
   196  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   197  					result.Paths = append(result.Paths, &PlanAssignment_FieldSubPath{selector: path.Selector(), subPath: subpath})
   198  				}
   199  			} else if sub, ok := path.(*PlanAssignment_FieldSubPath); ok {
   200  				selectedMask := &meta.Meta_FieldMask{
   201  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   202  				}
   203  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   204  					result.Paths = append(result.Paths, &PlanAssignment_FieldSubPath{selector: PlanAssignment_FieldPathSelectorMetadata, subPath: allowedPath})
   205  				}
   206  			}
   207  		default:
   208  			result.Paths = append(result.Paths, path)
   209  		}
   210  	}
   211  	return result
   212  }
   213  
   214  // ToFieldMask is used for proto conversions
   215  func (fieldMask *PlanAssignment_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   216  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   217  	for _, path := range fieldMask.Paths {
   218  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   219  	}
   220  	return protoFieldMask
   221  }
   222  
   223  func (fieldMask *PlanAssignment_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   224  	if fieldMask == nil {
   225  		return status.Error(codes.Internal, "target field mask is nil")
   226  	}
   227  	fieldMask.Paths = make([]PlanAssignment_FieldPath, 0, len(protoFieldMask.Paths))
   228  	for _, strPath := range protoFieldMask.Paths {
   229  		path, err := ParsePlanAssignment_FieldPath(strPath)
   230  		if err != nil {
   231  			return err
   232  		}
   233  		fieldMask.Paths = append(fieldMask.Paths, path)
   234  	}
   235  	return nil
   236  }
   237  
   238  // implement methods required by customType
   239  func (fieldMask PlanAssignment_FieldMask) Marshal() ([]byte, error) {
   240  	protoFieldMask := fieldMask.ToProtoFieldMask()
   241  	return proto.Marshal(protoFieldMask)
   242  }
   243  
   244  func (fieldMask *PlanAssignment_FieldMask) Unmarshal(data []byte) error {
   245  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   246  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   247  		return err
   248  	}
   249  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   250  		return err
   251  	}
   252  	return nil
   253  }
   254  
   255  func (fieldMask *PlanAssignment_FieldMask) Size() int {
   256  	return proto.Size(fieldMask.ToProtoFieldMask())
   257  }
   258  
   259  func (fieldMask PlanAssignment_FieldMask) MarshalJSON() ([]byte, error) {
   260  	return json.Marshal(fieldMask.ToProtoFieldMask())
   261  }
   262  
   263  func (fieldMask *PlanAssignment_FieldMask) UnmarshalJSON(data []byte) error {
   264  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   265  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   266  		return err
   267  	}
   268  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   269  		return err
   270  	}
   271  	return nil
   272  }
   273  
   274  func (fieldMask *PlanAssignment_FieldMask) AppendPath(path PlanAssignment_FieldPath) {
   275  	fieldMask.Paths = append(fieldMask.Paths, path)
   276  }
   277  
   278  func (fieldMask *PlanAssignment_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   279  	fieldMask.Paths = append(fieldMask.Paths, path.(PlanAssignment_FieldPath))
   280  }
   281  
   282  func (fieldMask *PlanAssignment_FieldMask) GetPaths() []PlanAssignment_FieldPath {
   283  	if fieldMask == nil {
   284  		return nil
   285  	}
   286  	return fieldMask.Paths
   287  }
   288  
   289  func (fieldMask *PlanAssignment_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   290  	if fieldMask == nil {
   291  		return nil
   292  	}
   293  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   294  	for _, path := range fieldMask.Paths {
   295  		rawPaths = append(rawPaths, path)
   296  	}
   297  	return rawPaths
   298  }
   299  
   300  func (fieldMask *PlanAssignment_FieldMask) SetFromCliFlag(raw string) error {
   301  	path, err := ParsePlanAssignment_FieldPath(raw)
   302  	if err != nil {
   303  		return err
   304  	}
   305  	fieldMask.Paths = append(fieldMask.Paths, path)
   306  	return nil
   307  }
   308  
   309  func (fieldMask *PlanAssignment_FieldMask) Set(target, source *PlanAssignment) {
   310  	for _, path := range fieldMask.Paths {
   311  		val, _ := path.GetSingle(source)
   312  		// if val is nil, then field does not exist in source, skip
   313  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   314  		if val != nil {
   315  			path.WithIValue(val).SetTo(&target)
   316  		}
   317  	}
   318  }
   319  
   320  func (fieldMask *PlanAssignment_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   321  	fieldMask.Set(target.(*PlanAssignment), source.(*PlanAssignment))
   322  }
   323  
   324  func (fieldMask *PlanAssignment_FieldMask) Project(source *PlanAssignment) *PlanAssignment {
   325  	if source == nil {
   326  		return nil
   327  	}
   328  	if fieldMask == nil {
   329  		return source
   330  	}
   331  	result := &PlanAssignment{}
   332  	metadataMask := &meta.Meta_FieldMask{}
   333  	wholeMetadataAccepted := false
   334  	regionalPlanOverridesMask := &common.RegionalPlanAssignment_FieldMask{}
   335  	wholeRegionalPlanOverridesAccepted := false
   336  	extensionsMask := &common.Allowance_FieldMask{}
   337  	wholeExtensionsAccepted := false
   338  	allowancesMask := &common.Allowance_FieldMask{}
   339  	wholeAllowancesAccepted := false
   340  
   341  	for _, p := range fieldMask.Paths {
   342  		switch tp := p.(type) {
   343  		case *PlanAssignment_FieldTerminalPath:
   344  			switch tp.selector {
   345  			case PlanAssignment_FieldPathSelectorName:
   346  				result.Name = source.Name
   347  			case PlanAssignment_FieldPathSelectorMetadata:
   348  				result.Metadata = source.Metadata
   349  				wholeMetadataAccepted = true
   350  			case PlanAssignment_FieldPathSelectorDefaultRegionalPlan:
   351  				result.DefaultRegionalPlan = source.DefaultRegionalPlan
   352  			case PlanAssignment_FieldPathSelectorService:
   353  				result.Service = source.Service
   354  			case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   355  				result.RegionalPlanOverrides = source.RegionalPlanOverrides
   356  				wholeRegionalPlanOverridesAccepted = true
   357  			case PlanAssignment_FieldPathSelectorExtensions:
   358  				result.Extensions = source.Extensions
   359  				wholeExtensionsAccepted = true
   360  			case PlanAssignment_FieldPathSelectorAllowances:
   361  				result.Allowances = source.Allowances
   362  				wholeAllowancesAccepted = true
   363  			case PlanAssignment_FieldPathSelectorAppliedRegions:
   364  				result.AppliedRegions = source.AppliedRegions
   365  			case PlanAssignment_FieldPathSelectorAppliedPlanSpecGeneration:
   366  				result.AppliedPlanSpecGeneration = source.AppliedPlanSpecGeneration
   367  			case PlanAssignment_FieldPathSelectorSource:
   368  				result.Source = source.Source
   369  			}
   370  		case *PlanAssignment_FieldSubPath:
   371  			switch tp.selector {
   372  			case PlanAssignment_FieldPathSelectorMetadata:
   373  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   374  			case PlanAssignment_FieldPathSelectorRegionalPlanOverrides:
   375  				regionalPlanOverridesMask.AppendPath(tp.subPath.(common.RegionalPlanAssignment_FieldPath))
   376  			case PlanAssignment_FieldPathSelectorExtensions:
   377  				extensionsMask.AppendPath(tp.subPath.(common.Allowance_FieldPath))
   378  			case PlanAssignment_FieldPathSelectorAllowances:
   379  				allowancesMask.AppendPath(tp.subPath.(common.Allowance_FieldPath))
   380  			}
   381  		}
   382  	}
   383  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   384  		result.Metadata = metadataMask.Project(source.GetMetadata())
   385  	}
   386  	if wholeRegionalPlanOverridesAccepted == false && len(regionalPlanOverridesMask.Paths) > 0 {
   387  		for _, sourceItem := range source.GetRegionalPlanOverrides() {
   388  			result.RegionalPlanOverrides = append(result.RegionalPlanOverrides, regionalPlanOverridesMask.Project(sourceItem))
   389  		}
   390  	}
   391  	if wholeExtensionsAccepted == false && len(extensionsMask.Paths) > 0 {
   392  		for _, sourceItem := range source.GetExtensions() {
   393  			result.Extensions = append(result.Extensions, extensionsMask.Project(sourceItem))
   394  		}
   395  	}
   396  	if wholeAllowancesAccepted == false && len(allowancesMask.Paths) > 0 {
   397  		for _, sourceItem := range source.GetAllowances() {
   398  			result.Allowances = append(result.Allowances, allowancesMask.Project(sourceItem))
   399  		}
   400  	}
   401  	return result
   402  }
   403  
   404  func (fieldMask *PlanAssignment_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   405  	return fieldMask.Project(source.(*PlanAssignment))
   406  }
   407  
   408  func (fieldMask *PlanAssignment_FieldMask) PathsCount() int {
   409  	if fieldMask == nil {
   410  		return 0
   411  	}
   412  	return len(fieldMask.Paths)
   413  }