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