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