github.com/cloudwan/edgelq-sdk@v1.15.4/iam/resources/v1alpha2/organization/organization.pb.fieldmask.go (about) 1 // Code generated by protoc-gen-goten-object 2 // File: edgelq/iam/proto/v1alpha2/organization.proto 3 // DO NOT EDIT!!! 4 5 package organization 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_common "github.com/cloudwan/edgelq-sdk/iam/resources/v1alpha2/common" 23 meta_service "github.com/cloudwan/edgelq-sdk/meta/resources/v1alpha2/service" 24 meta "github.com/cloudwan/goten-sdk/types/meta" 25 multi_region_policy "github.com/cloudwan/goten-sdk/types/multi_region_policy" 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_common.PCR{} 45 _ = &meta_service.Service{} 46 _ = &meta.Meta{} 47 _ = &multi_region_policy.MultiRegionPolicy{} 48 ) 49 50 type Organization_FieldMask struct { 51 Paths []Organization_FieldPath 52 } 53 54 func FullOrganization_FieldMask() *Organization_FieldMask { 55 res := &Organization_FieldMask{} 56 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorName}) 57 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorTitle}) 58 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorParentOrganization}) 59 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorRootOrganization}) 60 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorAncestryPath}) 61 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorMetadata}) 62 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorMultiRegionPolicy}) 63 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorAllowedServices}) 64 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorBusinessTier}) 65 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorServiceTiers}) 66 res.Paths = append(res.Paths, &Organization_FieldTerminalPath{selector: Organization_FieldPathSelectorServiceErrors}) 67 return res 68 } 69 70 func (fieldMask *Organization_FieldMask) String() string { 71 if fieldMask == nil { 72 return "<nil>" 73 } 74 pathsStr := make([]string, 0, len(fieldMask.Paths)) 75 for _, path := range fieldMask.Paths { 76 pathsStr = append(pathsStr, path.String()) 77 } 78 return strings.Join(pathsStr, ", ") 79 } 80 81 func (fieldMask *Organization_FieldMask) IsFull() bool { 82 if fieldMask == nil { 83 return false 84 } 85 presentSelectors := make([]bool, 11) 86 for _, path := range fieldMask.Paths { 87 if asFinal, ok := path.(*Organization_FieldTerminalPath); ok { 88 presentSelectors[int(asFinal.selector)] = true 89 } 90 } 91 for _, flag := range presentSelectors { 92 if !flag { 93 return false 94 } 95 } 96 return true 97 } 98 99 func (fieldMask *Organization_FieldMask) ProtoReflect() preflect.Message { 100 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 101 return ParseOrganization_FieldPath(raw) 102 }) 103 } 104 105 func (fieldMask *Organization_FieldMask) ProtoMessage() {} 106 107 func (fieldMask *Organization_FieldMask) Reset() { 108 if fieldMask != nil { 109 fieldMask.Paths = nil 110 } 111 } 112 113 func (fieldMask *Organization_FieldMask) Subtract(other *Organization_FieldMask) *Organization_FieldMask { 114 result := &Organization_FieldMask{} 115 removedSelectors := make([]bool, 11) 116 otherSubMasks := map[Organization_FieldPathSelector]gotenobject.FieldMask{ 117 Organization_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 118 Organization_FieldPathSelectorMultiRegionPolicy: &multi_region_policy.MultiRegionPolicy_FieldMask{}, 119 Organization_FieldPathSelectorServiceTiers: &iam_common.ServiceBusinessTier_FieldMask{}, 120 } 121 mySubMasks := map[Organization_FieldPathSelector]gotenobject.FieldMask{ 122 Organization_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 123 Organization_FieldPathSelectorMultiRegionPolicy: &multi_region_policy.MultiRegionPolicy_FieldMask{}, 124 Organization_FieldPathSelectorServiceTiers: &iam_common.ServiceBusinessTier_FieldMask{}, 125 } 126 127 for _, path := range other.GetPaths() { 128 switch tp := path.(type) { 129 case *Organization_FieldTerminalPath: 130 removedSelectors[int(tp.selector)] = true 131 case *Organization_FieldSubPath: 132 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 133 } 134 } 135 for _, path := range fieldMask.GetPaths() { 136 if !removedSelectors[int(path.Selector())] { 137 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 138 if tp, ok := path.(*Organization_FieldTerminalPath); ok { 139 switch tp.selector { 140 case Organization_FieldPathSelectorMetadata: 141 mySubMasks[Organization_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask() 142 case Organization_FieldPathSelectorMultiRegionPolicy: 143 mySubMasks[Organization_FieldPathSelectorMultiRegionPolicy] = multi_region_policy.FullMultiRegionPolicy_FieldMask() 144 case Organization_FieldPathSelectorServiceTiers: 145 mySubMasks[Organization_FieldPathSelectorServiceTiers] = iam_common.FullServiceBusinessTier_FieldMask() 146 } 147 } else if tp, ok := path.(*Organization_FieldSubPath); ok { 148 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 149 } 150 } else { 151 result.Paths = append(result.Paths, path) 152 } 153 } 154 } 155 for selector, mySubMask := range mySubMasks { 156 if mySubMask.PathsCount() > 0 { 157 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 158 result.Paths = append(result.Paths, &Organization_FieldSubPath{selector: selector, subPath: allowedPath}) 159 } 160 } 161 } 162 163 if len(result.Paths) == 0 { 164 return nil 165 } 166 return result 167 } 168 169 func (fieldMask *Organization_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 170 return fieldMask.Subtract(other.(*Organization_FieldMask)) 171 } 172 173 // FilterInputFields generates copy of field paths with output_only field paths removed 174 func (fieldMask *Organization_FieldMask) FilterInputFields() *Organization_FieldMask { 175 result := &Organization_FieldMask{} 176 for _, path := range fieldMask.Paths { 177 switch path.Selector() { 178 case Organization_FieldPathSelectorMetadata: 179 if _, ok := path.(*Organization_FieldTerminalPath); ok { 180 for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths { 181 result.Paths = append(result.Paths, &Organization_FieldSubPath{selector: path.Selector(), subPath: subpath}) 182 } 183 } else if sub, ok := path.(*Organization_FieldSubPath); ok { 184 selectedMask := &meta.Meta_FieldMask{ 185 Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)}, 186 } 187 for _, allowedPath := range selectedMask.FilterInputFields().Paths { 188 result.Paths = append(result.Paths, &Organization_FieldSubPath{selector: Organization_FieldPathSelectorMetadata, subPath: allowedPath}) 189 } 190 } 191 default: 192 result.Paths = append(result.Paths, path) 193 } 194 } 195 return result 196 } 197 198 // ToFieldMask is used for proto conversions 199 func (fieldMask *Organization_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 200 protoFieldMask := &googlefieldmaskpb.FieldMask{} 201 for _, path := range fieldMask.Paths { 202 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 203 } 204 return protoFieldMask 205 } 206 207 func (fieldMask *Organization_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 208 if fieldMask == nil { 209 return status.Error(codes.Internal, "target field mask is nil") 210 } 211 fieldMask.Paths = make([]Organization_FieldPath, 0, len(protoFieldMask.Paths)) 212 for _, strPath := range protoFieldMask.Paths { 213 path, err := ParseOrganization_FieldPath(strPath) 214 if err != nil { 215 return err 216 } 217 fieldMask.Paths = append(fieldMask.Paths, path) 218 } 219 return nil 220 } 221 222 // implement methods required by customType 223 func (fieldMask Organization_FieldMask) Marshal() ([]byte, error) { 224 protoFieldMask := fieldMask.ToProtoFieldMask() 225 return proto.Marshal(protoFieldMask) 226 } 227 228 func (fieldMask *Organization_FieldMask) Unmarshal(data []byte) error { 229 protoFieldMask := &googlefieldmaskpb.FieldMask{} 230 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 231 return err 232 } 233 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 234 return err 235 } 236 return nil 237 } 238 239 func (fieldMask *Organization_FieldMask) Size() int { 240 return proto.Size(fieldMask.ToProtoFieldMask()) 241 } 242 243 func (fieldMask Organization_FieldMask) MarshalJSON() ([]byte, error) { 244 return json.Marshal(fieldMask.ToProtoFieldMask()) 245 } 246 247 func (fieldMask *Organization_FieldMask) UnmarshalJSON(data []byte) error { 248 protoFieldMask := &googlefieldmaskpb.FieldMask{} 249 if err := json.Unmarshal(data, protoFieldMask); err != nil { 250 return err 251 } 252 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 253 return err 254 } 255 return nil 256 } 257 258 func (fieldMask *Organization_FieldMask) AppendPath(path Organization_FieldPath) { 259 fieldMask.Paths = append(fieldMask.Paths, path) 260 } 261 262 func (fieldMask *Organization_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 263 fieldMask.Paths = append(fieldMask.Paths, path.(Organization_FieldPath)) 264 } 265 266 func (fieldMask *Organization_FieldMask) GetPaths() []Organization_FieldPath { 267 if fieldMask == nil { 268 return nil 269 } 270 return fieldMask.Paths 271 } 272 273 func (fieldMask *Organization_FieldMask) GetRawPaths() []gotenobject.FieldPath { 274 if fieldMask == nil { 275 return nil 276 } 277 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 278 for _, path := range fieldMask.Paths { 279 rawPaths = append(rawPaths, path) 280 } 281 return rawPaths 282 } 283 284 func (fieldMask *Organization_FieldMask) SetFromCliFlag(raw string) error { 285 path, err := ParseOrganization_FieldPath(raw) 286 if err != nil { 287 return err 288 } 289 fieldMask.Paths = append(fieldMask.Paths, path) 290 return nil 291 } 292 293 func (fieldMask *Organization_FieldMask) Set(target, source *Organization) { 294 for _, path := range fieldMask.Paths { 295 val, _ := path.GetSingle(source) 296 // if val is nil, then field does not exist in source, skip 297 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 298 if val != nil { 299 path.WithIValue(val).SetTo(&target) 300 } 301 } 302 } 303 304 func (fieldMask *Organization_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 305 fieldMask.Set(target.(*Organization), source.(*Organization)) 306 } 307 308 func (fieldMask *Organization_FieldMask) Project(source *Organization) *Organization { 309 if source == nil { 310 return nil 311 } 312 if fieldMask == nil { 313 return source 314 } 315 result := &Organization{} 316 metadataMask := &meta.Meta_FieldMask{} 317 wholeMetadataAccepted := false 318 multiRegionPolicyMask := &multi_region_policy.MultiRegionPolicy_FieldMask{} 319 wholeMultiRegionPolicyAccepted := false 320 serviceTiersMask := &iam_common.ServiceBusinessTier_FieldMask{} 321 wholeServiceTiersAccepted := false 322 var serviceErrorsMapKeys []string 323 wholeServiceErrorsAccepted := false 324 325 for _, p := range fieldMask.Paths { 326 switch tp := p.(type) { 327 case *Organization_FieldTerminalPath: 328 switch tp.selector { 329 case Organization_FieldPathSelectorName: 330 result.Name = source.Name 331 case Organization_FieldPathSelectorTitle: 332 result.Title = source.Title 333 case Organization_FieldPathSelectorParentOrganization: 334 result.ParentOrganization = source.ParentOrganization 335 case Organization_FieldPathSelectorRootOrganization: 336 result.RootOrganization = source.RootOrganization 337 case Organization_FieldPathSelectorAncestryPath: 338 result.AncestryPath = source.AncestryPath 339 case Organization_FieldPathSelectorMetadata: 340 result.Metadata = source.Metadata 341 wholeMetadataAccepted = true 342 case Organization_FieldPathSelectorMultiRegionPolicy: 343 result.MultiRegionPolicy = source.MultiRegionPolicy 344 wholeMultiRegionPolicyAccepted = true 345 case Organization_FieldPathSelectorAllowedServices: 346 result.AllowedServices = source.AllowedServices 347 case Organization_FieldPathSelectorBusinessTier: 348 result.BusinessTier = source.BusinessTier 349 case Organization_FieldPathSelectorServiceTiers: 350 result.ServiceTiers = source.ServiceTiers 351 wholeServiceTiersAccepted = true 352 case Organization_FieldPathSelectorServiceErrors: 353 result.ServiceErrors = source.ServiceErrors 354 wholeServiceErrorsAccepted = true 355 } 356 case *Organization_FieldSubPath: 357 switch tp.selector { 358 case Organization_FieldPathSelectorMetadata: 359 metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath)) 360 case Organization_FieldPathSelectorMultiRegionPolicy: 361 multiRegionPolicyMask.AppendPath(tp.subPath.(multi_region_policy.MultiRegionPolicy_FieldPath)) 362 case Organization_FieldPathSelectorServiceTiers: 363 serviceTiersMask.AppendPath(tp.subPath.(iam_common.ServiceBusinessTier_FieldPath)) 364 } 365 case *Organization_FieldPathMap: 366 switch tp.selector { 367 case Organization_FieldPathSelectorServiceErrors: 368 serviceErrorsMapKeys = append(serviceErrorsMapKeys, tp.key) 369 } 370 } 371 } 372 if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 { 373 result.Metadata = metadataMask.Project(source.GetMetadata()) 374 } 375 if wholeMultiRegionPolicyAccepted == false && len(multiRegionPolicyMask.Paths) > 0 { 376 result.MultiRegionPolicy = multiRegionPolicyMask.Project(source.GetMultiRegionPolicy()) 377 } 378 if wholeServiceTiersAccepted == false && len(serviceTiersMask.Paths) > 0 { 379 for _, sourceItem := range source.GetServiceTiers() { 380 result.ServiceTiers = append(result.ServiceTiers, serviceTiersMask.Project(sourceItem)) 381 } 382 } 383 if wholeServiceErrorsAccepted == false && len(serviceErrorsMapKeys) > 0 && source.GetServiceErrors() != nil { 384 copiedMap := map[string]*iam_common.ServiceErrors{} 385 sourceMap := source.GetServiceErrors() 386 for _, key := range serviceErrorsMapKeys { 387 copiedMap[key] = sourceMap[key] 388 } 389 result.ServiceErrors = copiedMap 390 } 391 return result 392 } 393 394 func (fieldMask *Organization_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 395 return fieldMask.Project(source.(*Organization)) 396 } 397 398 func (fieldMask *Organization_FieldMask) PathsCount() int { 399 if fieldMask == nil { 400 return 0 401 } 402 return len(fieldMask.Paths) 403 }