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