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