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