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