github.com/cloudwan/edgelq-sdk@v1.15.4/alerting/resources/v1/policy_template/policy_template.pb.fieldmask.go (about) 1 // Code generated by protoc-gen-goten-object 2 // File: edgelq/alerting/proto/v1/policy_template.proto 3 // DO NOT EDIT!!! 4 5 package policy_template 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 rcommon "github.com/cloudwan/edgelq-sdk/alerting/resources/v1/common" 23 document "github.com/cloudwan/edgelq-sdk/alerting/resources/v1/document" 24 iam_project "github.com/cloudwan/edgelq-sdk/iam/resources/v1/project" 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 _ = &document.Document{} 45 _ = &rcommon.LogCndSpec{} 46 _ = &iam_project.Project{} 47 _ = &meta.Meta{} 48 ) 49 50 type PolicyTemplate_FieldMask struct { 51 Paths []PolicyTemplate_FieldPath 52 } 53 54 func FullPolicyTemplate_FieldMask() *PolicyTemplate_FieldMask { 55 res := &PolicyTemplate_FieldMask{} 56 res.Paths = append(res.Paths, &PolicyTemplate_FieldTerminalPath{selector: PolicyTemplate_FieldPathSelectorName}) 57 res.Paths = append(res.Paths, &PolicyTemplate_FieldTerminalPath{selector: PolicyTemplate_FieldPathSelectorMetadata}) 58 res.Paths = append(res.Paths, &PolicyTemplate_FieldTerminalPath{selector: PolicyTemplate_FieldPathSelectorDisplayName}) 59 res.Paths = append(res.Paths, &PolicyTemplate_FieldTerminalPath{selector: PolicyTemplate_FieldPathSelectorDescription}) 60 res.Paths = append(res.Paths, &PolicyTemplate_FieldTerminalPath{selector: PolicyTemplate_FieldPathSelectorSupportingDocs}) 61 res.Paths = append(res.Paths, &PolicyTemplate_FieldTerminalPath{selector: PolicyTemplate_FieldPathSelectorSpecTemplate}) 62 return res 63 } 64 65 func (fieldMask *PolicyTemplate_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 *PolicyTemplate_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.(*PolicyTemplate_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 *PolicyTemplate_FieldMask) ProtoReflect() preflect.Message { 95 return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) { 96 return ParsePolicyTemplate_FieldPath(raw) 97 }) 98 } 99 100 func (fieldMask *PolicyTemplate_FieldMask) ProtoMessage() {} 101 102 func (fieldMask *PolicyTemplate_FieldMask) Reset() { 103 if fieldMask != nil { 104 fieldMask.Paths = nil 105 } 106 } 107 108 func (fieldMask *PolicyTemplate_FieldMask) Subtract(other *PolicyTemplate_FieldMask) *PolicyTemplate_FieldMask { 109 result := &PolicyTemplate_FieldMask{} 110 removedSelectors := make([]bool, 6) 111 otherSubMasks := map[PolicyTemplate_FieldPathSelector]gotenobject.FieldMask{ 112 PolicyTemplate_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 113 PolicyTemplate_FieldPathSelectorSpecTemplate: &rcommon.PolicySpec_FieldMask{}, 114 } 115 mySubMasks := map[PolicyTemplate_FieldPathSelector]gotenobject.FieldMask{ 116 PolicyTemplate_FieldPathSelectorMetadata: &meta.Meta_FieldMask{}, 117 PolicyTemplate_FieldPathSelectorSpecTemplate: &rcommon.PolicySpec_FieldMask{}, 118 } 119 120 for _, path := range other.GetPaths() { 121 switch tp := path.(type) { 122 case *PolicyTemplate_FieldTerminalPath: 123 removedSelectors[int(tp.selector)] = true 124 case *PolicyTemplate_FieldSubPath: 125 otherSubMasks[tp.selector].AppendRawPath(tp.subPath) 126 } 127 } 128 for _, path := range fieldMask.GetPaths() { 129 if !removedSelectors[int(path.Selector())] { 130 if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 { 131 if tp, ok := path.(*PolicyTemplate_FieldTerminalPath); ok { 132 switch tp.selector { 133 case PolicyTemplate_FieldPathSelectorMetadata: 134 mySubMasks[PolicyTemplate_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask() 135 case PolicyTemplate_FieldPathSelectorSpecTemplate: 136 mySubMasks[PolicyTemplate_FieldPathSelectorSpecTemplate] = rcommon.FullPolicySpec_FieldMask() 137 } 138 } else if tp, ok := path.(*PolicyTemplate_FieldSubPath); ok { 139 mySubMasks[tp.selector].AppendRawPath(tp.subPath) 140 } 141 } else { 142 result.Paths = append(result.Paths, path) 143 } 144 } 145 } 146 for selector, mySubMask := range mySubMasks { 147 if mySubMask.PathsCount() > 0 { 148 for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() { 149 result.Paths = append(result.Paths, &PolicyTemplate_FieldSubPath{selector: selector, subPath: allowedPath}) 150 } 151 } 152 } 153 154 if len(result.Paths) == 0 { 155 return nil 156 } 157 return result 158 } 159 160 func (fieldMask *PolicyTemplate_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask { 161 return fieldMask.Subtract(other.(*PolicyTemplate_FieldMask)) 162 } 163 164 // FilterInputFields generates copy of field paths with output_only field paths removed 165 func (fieldMask *PolicyTemplate_FieldMask) FilterInputFields() *PolicyTemplate_FieldMask { 166 result := &PolicyTemplate_FieldMask{} 167 for _, path := range fieldMask.Paths { 168 switch path.Selector() { 169 case PolicyTemplate_FieldPathSelectorMetadata: 170 if _, ok := path.(*PolicyTemplate_FieldTerminalPath); ok { 171 for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths { 172 result.Paths = append(result.Paths, &PolicyTemplate_FieldSubPath{selector: path.Selector(), subPath: subpath}) 173 } 174 } else if sub, ok := path.(*PolicyTemplate_FieldSubPath); ok { 175 selectedMask := &meta.Meta_FieldMask{ 176 Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)}, 177 } 178 for _, allowedPath := range selectedMask.FilterInputFields().Paths { 179 result.Paths = append(result.Paths, &PolicyTemplate_FieldSubPath{selector: PolicyTemplate_FieldPathSelectorMetadata, subPath: allowedPath}) 180 } 181 } 182 default: 183 result.Paths = append(result.Paths, path) 184 } 185 } 186 return result 187 } 188 189 // ToFieldMask is used for proto conversions 190 func (fieldMask *PolicyTemplate_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask { 191 protoFieldMask := &googlefieldmaskpb.FieldMask{} 192 for _, path := range fieldMask.Paths { 193 protoFieldMask.Paths = append(protoFieldMask.Paths, path.String()) 194 } 195 return protoFieldMask 196 } 197 198 func (fieldMask *PolicyTemplate_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error { 199 if fieldMask == nil { 200 return status.Error(codes.Internal, "target field mask is nil") 201 } 202 fieldMask.Paths = make([]PolicyTemplate_FieldPath, 0, len(protoFieldMask.Paths)) 203 for _, strPath := range protoFieldMask.Paths { 204 path, err := ParsePolicyTemplate_FieldPath(strPath) 205 if err != nil { 206 return err 207 } 208 fieldMask.Paths = append(fieldMask.Paths, path) 209 } 210 return nil 211 } 212 213 // implement methods required by customType 214 func (fieldMask PolicyTemplate_FieldMask) Marshal() ([]byte, error) { 215 protoFieldMask := fieldMask.ToProtoFieldMask() 216 return proto.Marshal(protoFieldMask) 217 } 218 219 func (fieldMask *PolicyTemplate_FieldMask) Unmarshal(data []byte) error { 220 protoFieldMask := &googlefieldmaskpb.FieldMask{} 221 if err := proto.Unmarshal(data, protoFieldMask); err != nil { 222 return err 223 } 224 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 225 return err 226 } 227 return nil 228 } 229 230 func (fieldMask *PolicyTemplate_FieldMask) Size() int { 231 return proto.Size(fieldMask.ToProtoFieldMask()) 232 } 233 234 func (fieldMask PolicyTemplate_FieldMask) MarshalJSON() ([]byte, error) { 235 return json.Marshal(fieldMask.ToProtoFieldMask()) 236 } 237 238 func (fieldMask *PolicyTemplate_FieldMask) UnmarshalJSON(data []byte) error { 239 protoFieldMask := &googlefieldmaskpb.FieldMask{} 240 if err := json.Unmarshal(data, protoFieldMask); err != nil { 241 return err 242 } 243 if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil { 244 return err 245 } 246 return nil 247 } 248 249 func (fieldMask *PolicyTemplate_FieldMask) AppendPath(path PolicyTemplate_FieldPath) { 250 fieldMask.Paths = append(fieldMask.Paths, path) 251 } 252 253 func (fieldMask *PolicyTemplate_FieldMask) AppendRawPath(path gotenobject.FieldPath) { 254 fieldMask.Paths = append(fieldMask.Paths, path.(PolicyTemplate_FieldPath)) 255 } 256 257 func (fieldMask *PolicyTemplate_FieldMask) GetPaths() []PolicyTemplate_FieldPath { 258 if fieldMask == nil { 259 return nil 260 } 261 return fieldMask.Paths 262 } 263 264 func (fieldMask *PolicyTemplate_FieldMask) GetRawPaths() []gotenobject.FieldPath { 265 if fieldMask == nil { 266 return nil 267 } 268 rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths)) 269 for _, path := range fieldMask.Paths { 270 rawPaths = append(rawPaths, path) 271 } 272 return rawPaths 273 } 274 275 func (fieldMask *PolicyTemplate_FieldMask) SetFromCliFlag(raw string) error { 276 path, err := ParsePolicyTemplate_FieldPath(raw) 277 if err != nil { 278 return err 279 } 280 fieldMask.Paths = append(fieldMask.Paths, path) 281 return nil 282 } 283 284 func (fieldMask *PolicyTemplate_FieldMask) Set(target, source *PolicyTemplate) { 285 for _, path := range fieldMask.Paths { 286 val, _ := path.GetSingle(source) 287 // if val is nil, then field does not exist in source, skip 288 // otherwise, process (can still reflect.ValueOf(val).IsNil!) 289 if val != nil { 290 path.WithIValue(val).SetTo(&target) 291 } 292 } 293 } 294 295 func (fieldMask *PolicyTemplate_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) { 296 fieldMask.Set(target.(*PolicyTemplate), source.(*PolicyTemplate)) 297 } 298 299 func (fieldMask *PolicyTemplate_FieldMask) Project(source *PolicyTemplate) *PolicyTemplate { 300 if source == nil { 301 return nil 302 } 303 if fieldMask == nil { 304 return source 305 } 306 result := &PolicyTemplate{} 307 metadataMask := &meta.Meta_FieldMask{} 308 wholeMetadataAccepted := false 309 specTemplateMask := &rcommon.PolicySpec_FieldMask{} 310 wholeSpecTemplateAccepted := false 311 312 for _, p := range fieldMask.Paths { 313 switch tp := p.(type) { 314 case *PolicyTemplate_FieldTerminalPath: 315 switch tp.selector { 316 case PolicyTemplate_FieldPathSelectorName: 317 result.Name = source.Name 318 case PolicyTemplate_FieldPathSelectorMetadata: 319 result.Metadata = source.Metadata 320 wholeMetadataAccepted = true 321 case PolicyTemplate_FieldPathSelectorDisplayName: 322 result.DisplayName = source.DisplayName 323 case PolicyTemplate_FieldPathSelectorDescription: 324 result.Description = source.Description 325 case PolicyTemplate_FieldPathSelectorSupportingDocs: 326 result.SupportingDocs = source.SupportingDocs 327 case PolicyTemplate_FieldPathSelectorSpecTemplate: 328 result.SpecTemplate = source.SpecTemplate 329 wholeSpecTemplateAccepted = true 330 } 331 case *PolicyTemplate_FieldSubPath: 332 switch tp.selector { 333 case PolicyTemplate_FieldPathSelectorMetadata: 334 metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath)) 335 case PolicyTemplate_FieldPathSelectorSpecTemplate: 336 specTemplateMask.AppendPath(tp.subPath.(rcommon.PolicySpec_FieldPath)) 337 } 338 } 339 } 340 if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 { 341 result.Metadata = metadataMask.Project(source.GetMetadata()) 342 } 343 if wholeSpecTemplateAccepted == false && len(specTemplateMask.Paths) > 0 { 344 result.SpecTemplate = specTemplateMask.Project(source.GetSpecTemplate()) 345 } 346 return result 347 } 348 349 func (fieldMask *PolicyTemplate_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt { 350 return fieldMask.Project(source.(*PolicyTemplate)) 351 } 352 353 func (fieldMask *PolicyTemplate_FieldMask) PathsCount() int { 354 if fieldMask == nil { 355 return 0 356 } 357 return len(fieldMask.Paths) 358 }