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