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