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