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