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

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/limits/proto/v1/limit_pool.proto
     3  // DO NOT EDIT!!!
     4  
     5  package limit_pool
     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  	meta_resource "github.com/cloudwan/goten-sdk/meta-service/resources/v1/resource"
    24  	meta_service "github.com/cloudwan/goten-sdk/meta-service/resources/v1/service"
    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  	_ = &meta_resource.Resource{}
    46  	_ = &meta_service.Service{}
    47  	_ = &meta.Meta{}
    48  )
    49  
    50  type LimitPool_FieldMask struct {
    51  	Paths []LimitPool_FieldPath
    52  }
    53  
    54  func FullLimitPool_FieldMask() *LimitPool_FieldMask {
    55  	res := &LimitPool_FieldMask{}
    56  	res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorName})
    57  	res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorMetadata})
    58  	res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorService})
    59  	res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorResource})
    60  	res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorRegion})
    61  	res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorConfiguredSize})
    62  	res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorActiveSize})
    63  	res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorReserved})
    64  	res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorSource})
    65  	return res
    66  }
    67  
    68  func (fieldMask *LimitPool_FieldMask) String() string {
    69  	if fieldMask == nil {
    70  		return "<nil>"
    71  	}
    72  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    73  	for _, path := range fieldMask.Paths {
    74  		pathsStr = append(pathsStr, path.String())
    75  	}
    76  	return strings.Join(pathsStr, ", ")
    77  }
    78  
    79  func (fieldMask *LimitPool_FieldMask) IsFull() bool {
    80  	if fieldMask == nil {
    81  		return false
    82  	}
    83  	presentSelectors := make([]bool, 9)
    84  	for _, path := range fieldMask.Paths {
    85  		if asFinal, ok := path.(*LimitPool_FieldTerminalPath); ok {
    86  			presentSelectors[int(asFinal.selector)] = true
    87  		}
    88  	}
    89  	for _, flag := range presentSelectors {
    90  		if !flag {
    91  			return false
    92  		}
    93  	}
    94  	return true
    95  }
    96  
    97  func (fieldMask *LimitPool_FieldMask) ProtoReflect() preflect.Message {
    98  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
    99  		return ParseLimitPool_FieldPath(raw)
   100  	})
   101  }
   102  
   103  func (fieldMask *LimitPool_FieldMask) ProtoMessage() {}
   104  
   105  func (fieldMask *LimitPool_FieldMask) Reset() {
   106  	if fieldMask != nil {
   107  		fieldMask.Paths = nil
   108  	}
   109  }
   110  
   111  func (fieldMask *LimitPool_FieldMask) Subtract(other *LimitPool_FieldMask) *LimitPool_FieldMask {
   112  	result := &LimitPool_FieldMask{}
   113  	removedSelectors := make([]bool, 9)
   114  	otherSubMasks := map[LimitPool_FieldPathSelector]gotenobject.FieldMask{
   115  		LimitPool_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   116  	}
   117  	mySubMasks := map[LimitPool_FieldPathSelector]gotenobject.FieldMask{
   118  		LimitPool_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   119  	}
   120  
   121  	for _, path := range other.GetPaths() {
   122  		switch tp := path.(type) {
   123  		case *LimitPool_FieldTerminalPath:
   124  			removedSelectors[int(tp.selector)] = true
   125  		case *LimitPool_FieldSubPath:
   126  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   127  		}
   128  	}
   129  	for _, path := range fieldMask.GetPaths() {
   130  		if !removedSelectors[int(path.Selector())] {
   131  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   132  				if tp, ok := path.(*LimitPool_FieldTerminalPath); ok {
   133  					switch tp.selector {
   134  					case LimitPool_FieldPathSelectorMetadata:
   135  						mySubMasks[LimitPool_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   136  					}
   137  				} else if tp, ok := path.(*LimitPool_FieldSubPath); ok {
   138  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   139  				}
   140  			} else {
   141  				result.Paths = append(result.Paths, path)
   142  			}
   143  		}
   144  	}
   145  	for selector, mySubMask := range mySubMasks {
   146  		if mySubMask.PathsCount() > 0 {
   147  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   148  				result.Paths = append(result.Paths, &LimitPool_FieldSubPath{selector: selector, subPath: allowedPath})
   149  			}
   150  		}
   151  	}
   152  
   153  	if len(result.Paths) == 0 {
   154  		return nil
   155  	}
   156  	return result
   157  }
   158  
   159  func (fieldMask *LimitPool_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   160  	return fieldMask.Subtract(other.(*LimitPool_FieldMask))
   161  }
   162  
   163  // FilterInputFields generates copy of field paths with output_only field paths removed
   164  func (fieldMask *LimitPool_FieldMask) FilterInputFields() *LimitPool_FieldMask {
   165  	result := &LimitPool_FieldMask{}
   166  	for _, path := range fieldMask.Paths {
   167  		switch path.Selector() {
   168  		case LimitPool_FieldPathSelectorService:
   169  		case LimitPool_FieldPathSelectorResource:
   170  		case LimitPool_FieldPathSelectorRegion:
   171  		case LimitPool_FieldPathSelectorConfiguredSize:
   172  		case LimitPool_FieldPathSelectorSource:
   173  		case LimitPool_FieldPathSelectorMetadata:
   174  			if _, ok := path.(*LimitPool_FieldTerminalPath); ok {
   175  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   176  					result.Paths = append(result.Paths, &LimitPool_FieldSubPath{selector: path.Selector(), subPath: subpath})
   177  				}
   178  			} else if sub, ok := path.(*LimitPool_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, &LimitPool_FieldSubPath{selector: LimitPool_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 *LimitPool_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 *LimitPool_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([]LimitPool_FieldPath, 0, len(protoFieldMask.Paths))
   207  	for _, strPath := range protoFieldMask.Paths {
   208  		path, err := ParseLimitPool_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 LimitPool_FieldMask) Marshal() ([]byte, error) {
   219  	protoFieldMask := fieldMask.ToProtoFieldMask()
   220  	return proto.Marshal(protoFieldMask)
   221  }
   222  
   223  func (fieldMask *LimitPool_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 *LimitPool_FieldMask) Size() int {
   235  	return proto.Size(fieldMask.ToProtoFieldMask())
   236  }
   237  
   238  func (fieldMask LimitPool_FieldMask) MarshalJSON() ([]byte, error) {
   239  	return json.Marshal(fieldMask.ToProtoFieldMask())
   240  }
   241  
   242  func (fieldMask *LimitPool_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 *LimitPool_FieldMask) AppendPath(path LimitPool_FieldPath) {
   254  	fieldMask.Paths = append(fieldMask.Paths, path)
   255  }
   256  
   257  func (fieldMask *LimitPool_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   258  	fieldMask.Paths = append(fieldMask.Paths, path.(LimitPool_FieldPath))
   259  }
   260  
   261  func (fieldMask *LimitPool_FieldMask) GetPaths() []LimitPool_FieldPath {
   262  	if fieldMask == nil {
   263  		return nil
   264  	}
   265  	return fieldMask.Paths
   266  }
   267  
   268  func (fieldMask *LimitPool_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 *LimitPool_FieldMask) SetFromCliFlag(raw string) error {
   280  	path, err := ParseLimitPool_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 *LimitPool_FieldMask) Set(target, source *LimitPool) {
   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 *LimitPool_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   300  	fieldMask.Set(target.(*LimitPool), source.(*LimitPool))
   301  }
   302  
   303  func (fieldMask *LimitPool_FieldMask) Project(source *LimitPool) *LimitPool {
   304  	if source == nil {
   305  		return nil
   306  	}
   307  	if fieldMask == nil {
   308  		return source
   309  	}
   310  	result := &LimitPool{}
   311  	metadataMask := &meta.Meta_FieldMask{}
   312  	wholeMetadataAccepted := false
   313  
   314  	for _, p := range fieldMask.Paths {
   315  		switch tp := p.(type) {
   316  		case *LimitPool_FieldTerminalPath:
   317  			switch tp.selector {
   318  			case LimitPool_FieldPathSelectorName:
   319  				result.Name = source.Name
   320  			case LimitPool_FieldPathSelectorMetadata:
   321  				result.Metadata = source.Metadata
   322  				wholeMetadataAccepted = true
   323  			case LimitPool_FieldPathSelectorService:
   324  				result.Service = source.Service
   325  			case LimitPool_FieldPathSelectorResource:
   326  				result.Resource = source.Resource
   327  			case LimitPool_FieldPathSelectorRegion:
   328  				result.Region = source.Region
   329  			case LimitPool_FieldPathSelectorConfiguredSize:
   330  				result.ConfiguredSize = source.ConfiguredSize
   331  			case LimitPool_FieldPathSelectorActiveSize:
   332  				result.ActiveSize = source.ActiveSize
   333  			case LimitPool_FieldPathSelectorReserved:
   334  				result.Reserved = source.Reserved
   335  			case LimitPool_FieldPathSelectorSource:
   336  				result.Source = source.Source
   337  			}
   338  		case *LimitPool_FieldSubPath:
   339  			switch tp.selector {
   340  			case LimitPool_FieldPathSelectorMetadata:
   341  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   342  			}
   343  		}
   344  	}
   345  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   346  		result.Metadata = metadataMask.Project(source.GetMetadata())
   347  	}
   348  	return result
   349  }
   350  
   351  func (fieldMask *LimitPool_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   352  	return fieldMask.Project(source.(*LimitPool))
   353  }
   354  
   355  func (fieldMask *LimitPool_FieldMask) PathsCount() int {
   356  	if fieldMask == nil {
   357  		return 0
   358  	}
   359  	return len(fieldMask.Paths)
   360  }