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