github.com/cloudwan/edgelq-sdk@v1.15.4/limits/resources/v1alpha2/plan/plan.pb.object_ext.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1alpha2/plan.proto
     3  // DO NOT EDIT!!!
     4  
     5  package plan
     6  
     7  import (
     8  	"fmt"
     9  	"sort"
    10  
    11  	"google.golang.org/protobuf/proto"
    12  	googlefieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    13  
    14  	gotenobject "github.com/cloudwan/goten-sdk/runtime/object"
    15  )
    16  
    17  // proto imports
    18  import (
    19  	iam_iam_common "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/common"
    20  	common "github.com/cloudwan/edgelq-sdk/limits/resources/v1alpha2/common"
    21  	meta_service "github.com/cloudwan/edgelq-sdk/meta/resources/v1alpha2/service"
    22  	meta "github.com/cloudwan/goten-sdk/types/meta"
    23  )
    24  
    25  // ensure the imports are used
    26  var (
    27  	_ = new(fmt.Stringer)
    28  	_ = new(sort.Interface)
    29  
    30  	_ = new(proto.Message)
    31  	_ = googlefieldmaskpb.FieldMask{}
    32  
    33  	_ = new(gotenobject.FieldPath)
    34  )
    35  
    36  // make sure we're using proto imports
    37  var (
    38  	_ = &iam_iam_common.PCR{}
    39  	_ = &common.Allowance{}
    40  	_ = &meta_service.Service{}
    41  	_ = &meta.Meta{}
    42  )
    43  
    44  func (o *Plan) GotenObjectExt() {}
    45  
    46  func (o *Plan) MakeFullFieldMask() *Plan_FieldMask {
    47  	return FullPlan_FieldMask()
    48  }
    49  
    50  func (o *Plan) MakeRawFullFieldMask() gotenobject.FieldMask {
    51  	return FullPlan_FieldMask()
    52  }
    53  
    54  func (o *Plan) MakeDiffFieldMask(other *Plan) *Plan_FieldMask {
    55  	if o == nil && other == nil {
    56  		return &Plan_FieldMask{}
    57  	}
    58  	if o == nil || other == nil {
    59  		return FullPlan_FieldMask()
    60  	}
    61  
    62  	res := &Plan_FieldMask{}
    63  	if o.GetName().String() != other.GetName().String() {
    64  		res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorName})
    65  	}
    66  	if o.GetDisplayName() != other.GetDisplayName() {
    67  		res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorDisplayName})
    68  	}
    69  	if o.GetService().String() != other.GetService().String() {
    70  		res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorService})
    71  	}
    72  
    73  	if len(o.GetResourceLimits()) == len(other.GetResourceLimits()) {
    74  		for i, lValue := range o.GetResourceLimits() {
    75  			rValue := other.GetResourceLimits()[i]
    76  			if len(lValue.MakeDiffFieldMask(rValue).Paths) > 0 {
    77  				res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorResourceLimits})
    78  				break
    79  			}
    80  		}
    81  	} else {
    82  		res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorResourceLimits})
    83  	}
    84  	if o.GetPlanLevel() != other.GetPlanLevel() {
    85  		res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorPlanLevel})
    86  	}
    87  	if o.GetBusinessTier() != other.GetBusinessTier() {
    88  		res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorBusinessTier})
    89  	}
    90  	{
    91  		subMask := o.GetMetadata().MakeDiffFieldMask(other.GetMetadata())
    92  		if subMask.IsFull() {
    93  			res.Paths = append(res.Paths, &Plan_FieldTerminalPath{selector: Plan_FieldPathSelectorMetadata})
    94  		} else {
    95  			for _, subpath := range subMask.Paths {
    96  				res.Paths = append(res.Paths, &Plan_FieldSubPath{selector: Plan_FieldPathSelectorMetadata, subPath: subpath})
    97  			}
    98  		}
    99  	}
   100  	return res
   101  }
   102  
   103  func (o *Plan) MakeRawDiffFieldMask(other gotenobject.GotenObjectExt) gotenobject.FieldMask {
   104  	return o.MakeDiffFieldMask(other.(*Plan))
   105  }
   106  
   107  func (o *Plan) Clone() *Plan {
   108  	if o == nil {
   109  		return nil
   110  	}
   111  	result := &Plan{}
   112  	if o.Name == nil {
   113  		result.Name = nil
   114  	} else if data, err := o.Name.ProtoString(); err != nil {
   115  		panic(err)
   116  	} else {
   117  		result.Name = &Name{}
   118  		if err := result.Name.ParseProtoString(data); err != nil {
   119  			panic(err)
   120  		}
   121  	}
   122  	result.DisplayName = o.DisplayName
   123  	if o.Service == nil {
   124  		result.Service = nil
   125  	} else if data, err := o.Service.ProtoString(); err != nil {
   126  		panic(err)
   127  	} else {
   128  		result.Service = &meta_service.Reference{}
   129  		if err := result.Service.ParseProtoString(data); err != nil {
   130  			panic(err)
   131  		}
   132  	}
   133  	result.ResourceLimits = make([]*common.Allowance, len(o.ResourceLimits))
   134  	for i, sourceValue := range o.ResourceLimits {
   135  		result.ResourceLimits[i] = sourceValue.Clone()
   136  	}
   137  	result.PlanLevel = o.PlanLevel
   138  	result.BusinessTier = o.BusinessTier
   139  	result.Metadata = o.Metadata.Clone()
   140  	return result
   141  }
   142  
   143  func (o *Plan) CloneRaw() gotenobject.GotenObjectExt {
   144  	return o.Clone()
   145  }
   146  
   147  func (o *Plan) Merge(source *Plan) {
   148  	if source.GetName() != nil {
   149  		if data, err := source.GetName().ProtoString(); err != nil {
   150  			panic(err)
   151  		} else {
   152  			o.Name = &Name{}
   153  			if err := o.Name.ParseProtoString(data); err != nil {
   154  				panic(err)
   155  			}
   156  		}
   157  	} else {
   158  		o.Name = nil
   159  	}
   160  	o.DisplayName = source.GetDisplayName()
   161  	if source.GetService() != nil {
   162  		if data, err := source.GetService().ProtoString(); err != nil {
   163  			panic(err)
   164  		} else {
   165  			o.Service = &meta_service.Reference{}
   166  			if err := o.Service.ParseProtoString(data); err != nil {
   167  				panic(err)
   168  			}
   169  		}
   170  	} else {
   171  		o.Service = nil
   172  	}
   173  	for _, sourceValue := range source.GetResourceLimits() {
   174  		exists := false
   175  		for _, currentValue := range o.ResourceLimits {
   176  			if proto.Equal(sourceValue, currentValue) {
   177  				exists = true
   178  				break
   179  			}
   180  		}
   181  		if !exists {
   182  			var newDstElement *common.Allowance
   183  			if sourceValue != nil {
   184  				newDstElement = new(common.Allowance)
   185  				newDstElement.Merge(sourceValue)
   186  			}
   187  			o.ResourceLimits = append(o.ResourceLimits, newDstElement)
   188  		}
   189  	}
   190  
   191  	o.PlanLevel = source.GetPlanLevel()
   192  	o.BusinessTier = source.GetBusinessTier()
   193  	if source.GetMetadata() != nil {
   194  		if o.Metadata == nil {
   195  			o.Metadata = new(meta.Meta)
   196  		}
   197  		o.Metadata.Merge(source.GetMetadata())
   198  	}
   199  }
   200  
   201  func (o *Plan) MergeRaw(source gotenobject.GotenObjectExt) {
   202  	o.Merge(source.(*Plan))
   203  }