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