github.com/cloudwan/edgelq-sdk@v1.15.4/limits/resources/v1alpha2/limit_pool/limit_pool.pb.fieldmask.go (about) 1 // Code generated by protoc-gen-goten-object 2 // File: edgelq/limits/proto/v1alpha2/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/v1alpha2/organization" 23 meta_resource "github.com/cloudwan/edgelq-sdk/meta/resources/v1alpha2/resource" 24 meta_service "github.com/cloudwan/edgelq-sdk/meta/resources/v1alpha2/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_FieldPathSelectorService}) 58 res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorResource}) 59 res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorConfiguredSize}) 60 res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorActiveSize}) 61 res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorReserved}) 62 res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorSource}) 63 res.Paths = append(res.Paths, &LimitPool_FieldTerminalPath{selector: LimitPool_FieldPathSelectorMetadata}) 64 return res 65 } 66 67 func (fieldMask *LimitPool_FieldMask) String() string { 68 if fieldMask == nil { 69 return "<nil>" 70 } 71 pathsStr := make([]string, 0, len(fieldMask.Paths)) 72 for _, path := range fieldMask.Paths { 73 pathsStr = append(pathsStr, path.String()) 74 } 75 return strings.Join(pathsStr, ", ") 76 } 77 78 func (fieldMask *LimitPool_FieldMask) IsFull() bool { 79 if fieldMask == nil { 80 return false 81 } 82 presentSelectors := make([]bool, 8) 83 for _, path := range fieldMask.Paths { 84 if asFinal, ok := path.(*LimitPool_FieldTerminalPath); ok { 85 presentSelectors[int(asFinal.selector)] = true 86 } 87 } 88 for _, flag := range presentSelectors { 89 if !flag { 90 return false 91 } 92 } 93 return true 94 } 95 96 func (fieldMask *LimitPool_FieldMask) ProtoReflect() preflect.Message { 97 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 98 return ParseLimitPool_FieldPath(raw) 99 }) 100 } 101 102 func (fieldMask *LimitPool_FieldMask) ProtoMessage() {} 103 104 func (fieldMask *LimitPool_FieldMask) Reset() { 105 if fieldMask != nil { 106 fieldMask.Paths = nil 107 } 108 } 109 110 func (fieldMask *LimitPool_FieldMask) Subtract(other *LimitPool_FieldMask) *LimitPool_FieldMask { 111 result := &LimitPool_FieldMask{} 112 removedSelectors := make([]bool, 8) 113 otherSubMasks := map[LimitPool_FieldPathSelector]gotenobject.FieldMask{ 114 LimitPool_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 115 } 116 mySubMasks := map[LimitPool_FieldPathSelector]gotenobject.FieldMask{ 117 LimitPool_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 118 } 119 120 for _, path := range other.GetPaths() { 121 switch tp := path.(type) { 122 case *LimitPool_FieldTerminalPath: 123 removedSelectors[int(tp.selector)] = true 124 case *LimitPool_FieldSubPath: 125 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 126 } 127 } 128 for _, path := range fieldMask.GetPaths() { 129 if !removedSelectors[int(path.Selector())] { 130 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 131 if tp, ok := path.(*LimitPool_FieldTerminalPath); ok { 132 switch tp.selector { 133 case LimitPool_FieldPathSelectorMetadata: 134 mySubMasks[LimitPool_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask() 135 } 136 } else if tp, ok := path.(*LimitPool_FieldSubPath); ok { 137 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 138 } 139 } else { 140 result.Paths = append(result.Paths, path) 141 } 142 } 143 } 144 for selector, mySubMask := range mySubMasks { 145 if mySubMask.PathsCount() > 0 { 146 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 147 result.Paths = append(result.Paths, &LimitPool_FieldSubPath{selector: selector, subPath: allowedPath}) 148 } 149 } 150 } 151 152 if len(result.Paths) == 0 { 153 return nil 154 } 155 return result 156 } 157 158 func (fieldMask *LimitPool_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 159 return fieldMask.Subtract(other.(*LimitPool_FieldMask)) 160 } 161 162 // FilterInputFields generates copy of field paths with output_only field paths removed 163 func (fieldMask *LimitPool_FieldMask) FilterInputFields() *LimitPool_FieldMask { 164 result := &LimitPool_FieldMask{} 165 for _, path := range fieldMask.Paths { 166 switch path.Selector() { 167 case LimitPool_FieldPathSelectorService: 168 case LimitPool_FieldPathSelectorResource: 169 case LimitPool_FieldPathSelectorConfiguredSize: 170 case LimitPool_FieldPathSelectorSource: 171 case LimitPool_FieldPathSelectorMetadata: 172 if _, ok := path.(*LimitPool_FieldTerminalPath); ok { 173 for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths { 174 result.Paths = append(result.Paths, &LimitPool_FieldSubPath{selector: path.Selector(), subPath: subpath}) 175 } 176 } else if sub, ok := path.(*LimitPool_FieldSubPath); ok { 177 selectedMask := &meta.Meta_FieldMask{ 178 Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)}, 179 } 180 for _, allowedPath := range selectedMask.FilterInputFields().Paths { 181 result.Paths = append(result.Paths, &LimitPool_FieldSubPath{selector: LimitPool_FieldPathSelectorMetadata, subPath: allowedPath}) 182 } 183 } 184 default: 185 result.Paths = append(result.Paths, path) 186 } 187 } 188 return result 189 } 190 191 // ToFieldMask is used for proto conversions 192 func (fieldMask *LimitPool_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 193 protoFieldMask := &googlefieldmaskpb.FieldMask{} 194 for _, path := range fieldMask.Paths { 195 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 196 } 197 return protoFieldMask 198 } 199 200 func (fieldMask *LimitPool_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 201 if fieldMask == nil { 202 return status.Error(codes.Internal, "target field mask is nil") 203 } 204 fieldMask.Paths = make([]LimitPool_FieldPath, 0, len(protoFieldMask.Paths)) 205 for _, strPath := range protoFieldMask.Paths { 206 path, err := ParseLimitPool_FieldPath(strPath) 207 if err != nil { 208 return err 209 } 210 fieldMask.Paths = append(fieldMask.Paths, path) 211 } 212 return nil 213 } 214 215 // implement methods required by customType 216 func (fieldMask LimitPool_FieldMask) Marshal() ([]byte, error) { 217 protoFieldMask := fieldMask.ToProtoFieldMask() 218 return proto.Marshal(protoFieldMask) 219 } 220 221 func (fieldMask *LimitPool_FieldMask) Unmarshal(data []byte) error { 222 protoFieldMask := &googlefieldmaskpb.FieldMask{} 223 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 224 return err 225 } 226 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 227 return err 228 } 229 return nil 230 } 231 232 func (fieldMask *LimitPool_FieldMask) Size() int { 233 return proto.Size(fieldMask.ToProtoFieldMask()) 234 } 235 236 func (fieldMask LimitPool_FieldMask) MarshalJSON() ([]byte, error) { 237 return json.Marshal(fieldMask.ToProtoFieldMask()) 238 } 239 240 func (fieldMask *LimitPool_FieldMask) UnmarshalJSON(data []byte) error { 241 protoFieldMask := &googlefieldmaskpb.FieldMask{} 242 if err := json.Unmarshal(data, protoFieldMask); err != nil { 243 return err 244 } 245 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 246 return err 247 } 248 return nil 249 } 250 251 func (fieldMask *LimitPool_FieldMask) AppendPath(path LimitPool_FieldPath) { 252 fieldMask.Paths = append(fieldMask.Paths, path) 253 } 254 255 func (fieldMask *LimitPool_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 256 fieldMask.Paths = append(fieldMask.Paths, path.(LimitPool_FieldPath)) 257 } 258 259 func (fieldMask *LimitPool_FieldMask) GetPaths() []LimitPool_FieldPath { 260 if fieldMask == nil { 261 return nil 262 } 263 return fieldMask.Paths 264 } 265 266 func (fieldMask *LimitPool_FieldMask) GetRawPaths() []gotenobject.FieldPath { 267 if fieldMask == nil { 268 return nil 269 } 270 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 271 for _, path := range fieldMask.Paths { 272 rawPaths = append(rawPaths, path) 273 } 274 return rawPaths 275 } 276 277 func (fieldMask *LimitPool_FieldMask) SetFromCliFlag(raw string) error { 278 path, err := ParseLimitPool_FieldPath(raw) 279 if err != nil { 280 return err 281 } 282 fieldMask.Paths = append(fieldMask.Paths, path) 283 return nil 284 } 285 286 func (fieldMask *LimitPool_FieldMask) Set(target, source *LimitPool) { 287 for _, path := range fieldMask.Paths { 288 val, _ := path.GetSingle(source) 289 // if val is nil, then field does not exist in source, skip 290 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 291 if val != nil { 292 path.WithIValue(val).SetTo(&target) 293 } 294 } 295 } 296 297 func (fieldMask *LimitPool_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 298 fieldMask.Set(target.(*LimitPool), source.(*LimitPool)) 299 } 300 301 func (fieldMask *LimitPool_FieldMask) Project(source *LimitPool) *LimitPool { 302 if source == nil { 303 return nil 304 } 305 if fieldMask == nil { 306 return source 307 } 308 result := &LimitPool{} 309 metadataMask := &meta.Meta_FieldMask{} 310 wholeMetadataAccepted := false 311 312 for _, p := range fieldMask.Paths { 313 switch tp := p.(type) { 314 case *LimitPool_FieldTerminalPath: 315 switch tp.selector { 316 case LimitPool_FieldPathSelectorName: 317 result.Name = source.Name 318 case LimitPool_FieldPathSelectorService: 319 result.Service = source.Service 320 case LimitPool_FieldPathSelectorResource: 321 result.Resource = source.Resource 322 case LimitPool_FieldPathSelectorConfiguredSize: 323 result.ConfiguredSize = source.ConfiguredSize 324 case LimitPool_FieldPathSelectorActiveSize: 325 result.ActiveSize = source.ActiveSize 326 case LimitPool_FieldPathSelectorReserved: 327 result.Reserved = source.Reserved 328 case LimitPool_FieldPathSelectorSource: 329 result.Source = source.Source 330 case LimitPool_FieldPathSelectorMetadata: 331 result.Metadata = source.Metadata 332 wholeMetadataAccepted = true 333 } 334 case *LimitPool_FieldSubPath: 335 switch tp.selector { 336 case LimitPool_FieldPathSelectorMetadata: 337 metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath)) 338 } 339 } 340 } 341 if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 { 342 result.Metadata = metadataMask.Project(source.GetMetadata()) 343 } 344 return result 345 } 346 347 func (fieldMask *LimitPool_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 348 return fieldMask.Project(source.(*LimitPool)) 349 } 350 351 func (fieldMask *LimitPool_FieldMask) PathsCount() int { 352 if fieldMask == nil { 353 return 0 354 } 355 return len(fieldMask.Paths) 356 }