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 }