github.com/cloudwan/edgelq-sdk@v1.15.4/iam/resources/v1alpha2/user/user.pb.fieldmask.go (about)

     1  // Code generated by protoc-gen-goten-object
     2  // File: edgelq/iam/proto/v1alpha2/user.proto
     3  // DO NOT EDIT!!!
     4  
     5  package user
     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  	meta "github.com/cloudwan/goten-sdk/types/meta"
    23  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    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  	_ = &timestamppb.Timestamp{}
    43  	_ = &meta.Meta{}
    44  )
    45  
    46  type User_FieldMask struct {
    47  	Paths []User_FieldPath
    48  }
    49  
    50  func FullUser_FieldMask() *User_FieldMask {
    51  	res := &User_FieldMask{}
    52  	res.Paths = append(res.Paths, &User_FieldTerminalPath{selector: User_FieldPathSelectorName})
    53  	res.Paths = append(res.Paths, &User_FieldTerminalPath{selector: User_FieldPathSelectorFullName})
    54  	res.Paths = append(res.Paths, &User_FieldTerminalPath{selector: User_FieldPathSelectorMetadata})
    55  	res.Paths = append(res.Paths, &User_FieldTerminalPath{selector: User_FieldPathSelectorEmail})
    56  	res.Paths = append(res.Paths, &User_FieldTerminalPath{selector: User_FieldPathSelectorEmailVerified})
    57  	res.Paths = append(res.Paths, &User_FieldTerminalPath{selector: User_FieldPathSelectorAuthInfo})
    58  	res.Paths = append(res.Paths, &User_FieldTerminalPath{selector: User_FieldPathSelectorSettings})
    59  	res.Paths = append(res.Paths, &User_FieldTerminalPath{selector: User_FieldPathSelectorRefreshedTime})
    60  	return res
    61  }
    62  
    63  func (fieldMask *User_FieldMask) String() string {
    64  	if fieldMask == nil {
    65  		return "<nil>"
    66  	}
    67  	pathsStr := make([]string, 0, len(fieldMask.Paths))
    68  	for _, path := range fieldMask.Paths {
    69  		pathsStr = append(pathsStr, path.String())
    70  	}
    71  	return strings.Join(pathsStr, ", ")
    72  }
    73  
    74  func (fieldMask *User_FieldMask) IsFull() bool {
    75  	if fieldMask == nil {
    76  		return false
    77  	}
    78  	presentSelectors := make([]bool, 8)
    79  	for _, path := range fieldMask.Paths {
    80  		if asFinal, ok := path.(*User_FieldTerminalPath); ok {
    81  			presentSelectors[int(asFinal.selector)] = true
    82  		}
    83  	}
    84  	for _, flag := range presentSelectors {
    85  		if !flag {
    86  			return false
    87  		}
    88  	}
    89  	return true
    90  }
    91  
    92  func (fieldMask *User_FieldMask) ProtoReflect() preflect.Message {
    93  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
    94  		return ParseUser_FieldPath(raw)
    95  	})
    96  }
    97  
    98  func (fieldMask *User_FieldMask) ProtoMessage() {}
    99  
   100  func (fieldMask *User_FieldMask) Reset() {
   101  	if fieldMask != nil {
   102  		fieldMask.Paths = nil
   103  	}
   104  }
   105  
   106  func (fieldMask *User_FieldMask) Subtract(other *User_FieldMask) *User_FieldMask {
   107  	result := &User_FieldMask{}
   108  	removedSelectors := make([]bool, 8)
   109  	otherSubMasks := map[User_FieldPathSelector]gotenobject.FieldMask{
   110  		User_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   111  		User_FieldPathSelectorAuthInfo: &User_AuthInfo_FieldMask{},
   112  	}
   113  	mySubMasks := map[User_FieldPathSelector]gotenobject.FieldMask{
   114  		User_FieldPathSelectorMetadata: &meta.Meta_FieldMask{},
   115  		User_FieldPathSelectorAuthInfo: &User_AuthInfo_FieldMask{},
   116  	}
   117  
   118  	for _, path := range other.GetPaths() {
   119  		switch tp := path.(type) {
   120  		case *User_FieldTerminalPath:
   121  			removedSelectors[int(tp.selector)] = true
   122  		case *User_FieldSubPath:
   123  			otherSubMasks[tp.selector].AppendRawPath(tp.subPath)
   124  		}
   125  	}
   126  	for _, path := range fieldMask.GetPaths() {
   127  		if !removedSelectors[int(path.Selector())] {
   128  			if otherSubMask := otherSubMasks[path.Selector()]; otherSubMask != nil && otherSubMask.PathsCount() > 0 {
   129  				if tp, ok := path.(*User_FieldTerminalPath); ok {
   130  					switch tp.selector {
   131  					case User_FieldPathSelectorMetadata:
   132  						mySubMasks[User_FieldPathSelectorMetadata] = meta.FullMeta_FieldMask()
   133  					case User_FieldPathSelectorAuthInfo:
   134  						mySubMasks[User_FieldPathSelectorAuthInfo] = FullUser_AuthInfo_FieldMask()
   135  					}
   136  				} else if tp, ok := path.(*User_FieldSubPath); ok {
   137  					mySubMasks[tp.selector].AppendRawPath(tp.subPath)
   138  				}
   139  			} else {
   140  				result.Paths = append(result.Paths, path)
   141  			}
   142  		}
   143  	}
   144  	for selector, mySubMask := range mySubMasks {
   145  		if mySubMask.PathsCount() > 0 {
   146  			for _, allowedPath := range mySubMask.SubtractRaw(otherSubMasks[selector]).GetRawPaths() {
   147  				result.Paths = append(result.Paths, &User_FieldSubPath{selector: selector, subPath: allowedPath})
   148  			}
   149  		}
   150  	}
   151  
   152  	if len(result.Paths) == 0 {
   153  		return nil
   154  	}
   155  	return result
   156  }
   157  
   158  func (fieldMask *User_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   159  	return fieldMask.Subtract(other.(*User_FieldMask))
   160  }
   161  
   162  // FilterInputFields generates copy of field paths with output_only field paths removed
   163  func (fieldMask *User_FieldMask) FilterInputFields() *User_FieldMask {
   164  	result := &User_FieldMask{}
   165  	for _, path := range fieldMask.Paths {
   166  		switch path.Selector() {
   167  		case User_FieldPathSelectorRefreshedTime:
   168  		case User_FieldPathSelectorMetadata:
   169  			if _, ok := path.(*User_FieldTerminalPath); ok {
   170  				for _, subpath := range meta.FullMeta_FieldMask().FilterInputFields().Paths {
   171  					result.Paths = append(result.Paths, &User_FieldSubPath{selector: path.Selector(), subPath: subpath})
   172  				}
   173  			} else if sub, ok := path.(*User_FieldSubPath); ok {
   174  				selectedMask := &meta.Meta_FieldMask{
   175  					Paths: []meta.Meta_FieldPath{sub.subPath.(meta.Meta_FieldPath)},
   176  				}
   177  				for _, allowedPath := range selectedMask.FilterInputFields().Paths {
   178  					result.Paths = append(result.Paths, &User_FieldSubPath{selector: User_FieldPathSelectorMetadata, subPath: allowedPath})
   179  				}
   180  			}
   181  		default:
   182  			result.Paths = append(result.Paths, path)
   183  		}
   184  	}
   185  	return result
   186  }
   187  
   188  // ToFieldMask is used for proto conversions
   189  func (fieldMask *User_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   190  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   191  	for _, path := range fieldMask.Paths {
   192  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   193  	}
   194  	return protoFieldMask
   195  }
   196  
   197  func (fieldMask *User_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   198  	if fieldMask == nil {
   199  		return status.Error(codes.Internal, "target field mask is nil")
   200  	}
   201  	fieldMask.Paths = make([]User_FieldPath, 0, len(protoFieldMask.Paths))
   202  	for _, strPath := range protoFieldMask.Paths {
   203  		path, err := ParseUser_FieldPath(strPath)
   204  		if err != nil {
   205  			return err
   206  		}
   207  		fieldMask.Paths = append(fieldMask.Paths, path)
   208  	}
   209  	return nil
   210  }
   211  
   212  // implement methods required by customType
   213  func (fieldMask User_FieldMask) Marshal() ([]byte, error) {
   214  	protoFieldMask := fieldMask.ToProtoFieldMask()
   215  	return proto.Marshal(protoFieldMask)
   216  }
   217  
   218  func (fieldMask *User_FieldMask) Unmarshal(data []byte) error {
   219  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   220  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   221  		return err
   222  	}
   223  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   224  		return err
   225  	}
   226  	return nil
   227  }
   228  
   229  func (fieldMask *User_FieldMask) Size() int {
   230  	return proto.Size(fieldMask.ToProtoFieldMask())
   231  }
   232  
   233  func (fieldMask User_FieldMask) MarshalJSON() ([]byte, error) {
   234  	return json.Marshal(fieldMask.ToProtoFieldMask())
   235  }
   236  
   237  func (fieldMask *User_FieldMask) UnmarshalJSON(data []byte) error {
   238  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   239  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   240  		return err
   241  	}
   242  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   243  		return err
   244  	}
   245  	return nil
   246  }
   247  
   248  func (fieldMask *User_FieldMask) AppendPath(path User_FieldPath) {
   249  	fieldMask.Paths = append(fieldMask.Paths, path)
   250  }
   251  
   252  func (fieldMask *User_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   253  	fieldMask.Paths = append(fieldMask.Paths, path.(User_FieldPath))
   254  }
   255  
   256  func (fieldMask *User_FieldMask) GetPaths() []User_FieldPath {
   257  	if fieldMask == nil {
   258  		return nil
   259  	}
   260  	return fieldMask.Paths
   261  }
   262  
   263  func (fieldMask *User_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   264  	if fieldMask == nil {
   265  		return nil
   266  	}
   267  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   268  	for _, path := range fieldMask.Paths {
   269  		rawPaths = append(rawPaths, path)
   270  	}
   271  	return rawPaths
   272  }
   273  
   274  func (fieldMask *User_FieldMask) SetFromCliFlag(raw string) error {
   275  	path, err := ParseUser_FieldPath(raw)
   276  	if err != nil {
   277  		return err
   278  	}
   279  	fieldMask.Paths = append(fieldMask.Paths, path)
   280  	return nil
   281  }
   282  
   283  func (fieldMask *User_FieldMask) Set(target, source *User) {
   284  	for _, path := range fieldMask.Paths {
   285  		val, _ := path.GetSingle(source)
   286  		// if val is nil, then field does not exist in source, skip
   287  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   288  		if val != nil {
   289  			path.WithIValue(val).SetTo(&target)
   290  		}
   291  	}
   292  }
   293  
   294  func (fieldMask *User_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   295  	fieldMask.Set(target.(*User), source.(*User))
   296  }
   297  
   298  func (fieldMask *User_FieldMask) Project(source *User) *User {
   299  	if source == nil {
   300  		return nil
   301  	}
   302  	if fieldMask == nil {
   303  		return source
   304  	}
   305  	result := &User{}
   306  	metadataMask := &meta.Meta_FieldMask{}
   307  	wholeMetadataAccepted := false
   308  	authInfoMask := &User_AuthInfo_FieldMask{}
   309  	wholeAuthInfoAccepted := false
   310  	var settingsMapKeys []string
   311  	wholeSettingsAccepted := false
   312  
   313  	for _, p := range fieldMask.Paths {
   314  		switch tp := p.(type) {
   315  		case *User_FieldTerminalPath:
   316  			switch tp.selector {
   317  			case User_FieldPathSelectorName:
   318  				result.Name = source.Name
   319  			case User_FieldPathSelectorFullName:
   320  				result.FullName = source.FullName
   321  			case User_FieldPathSelectorMetadata:
   322  				result.Metadata = source.Metadata
   323  				wholeMetadataAccepted = true
   324  			case User_FieldPathSelectorEmail:
   325  				result.Email = source.Email
   326  			case User_FieldPathSelectorEmailVerified:
   327  				result.EmailVerified = source.EmailVerified
   328  			case User_FieldPathSelectorAuthInfo:
   329  				result.AuthInfo = source.AuthInfo
   330  				wholeAuthInfoAccepted = true
   331  			case User_FieldPathSelectorSettings:
   332  				result.Settings = source.Settings
   333  				wholeSettingsAccepted = true
   334  			case User_FieldPathSelectorRefreshedTime:
   335  				result.RefreshedTime = source.RefreshedTime
   336  			}
   337  		case *User_FieldSubPath:
   338  			switch tp.selector {
   339  			case User_FieldPathSelectorMetadata:
   340  				metadataMask.AppendPath(tp.subPath.(meta.Meta_FieldPath))
   341  			case User_FieldPathSelectorAuthInfo:
   342  				authInfoMask.AppendPath(tp.subPath.(UserAuthInfo_FieldPath))
   343  			}
   344  		case *User_FieldPathMap:
   345  			switch tp.selector {
   346  			case User_FieldPathSelectorSettings:
   347  				settingsMapKeys = append(settingsMapKeys, tp.key)
   348  			}
   349  		}
   350  	}
   351  	if wholeMetadataAccepted == false && len(metadataMask.Paths) > 0 {
   352  		result.Metadata = metadataMask.Project(source.GetMetadata())
   353  	}
   354  	if wholeAuthInfoAccepted == false && len(authInfoMask.Paths) > 0 {
   355  		result.AuthInfo = authInfoMask.Project(source.GetAuthInfo())
   356  	}
   357  	if wholeSettingsAccepted == false && len(settingsMapKeys) > 0 && source.GetSettings() != nil {
   358  		copiedMap := map[string]string{}
   359  		sourceMap := source.GetSettings()
   360  		for _, key := range settingsMapKeys {
   361  			copiedMap[key] = sourceMap[key]
   362  		}
   363  		result.Settings = copiedMap
   364  	}
   365  	return result
   366  }
   367  
   368  func (fieldMask *User_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   369  	return fieldMask.Project(source.(*User))
   370  }
   371  
   372  func (fieldMask *User_FieldMask) PathsCount() int {
   373  	if fieldMask == nil {
   374  		return 0
   375  	}
   376  	return len(fieldMask.Paths)
   377  }
   378  
   379  type User_AuthInfo_FieldMask struct {
   380  	Paths []UserAuthInfo_FieldPath
   381  }
   382  
   383  func FullUser_AuthInfo_FieldMask() *User_AuthInfo_FieldMask {
   384  	res := &User_AuthInfo_FieldMask{}
   385  	res.Paths = append(res.Paths, &UserAuthInfo_FieldTerminalPath{selector: UserAuthInfo_FieldPathSelectorProvider})
   386  	res.Paths = append(res.Paths, &UserAuthInfo_FieldTerminalPath{selector: UserAuthInfo_FieldPathSelectorId})
   387  	return res
   388  }
   389  
   390  func (fieldMask *User_AuthInfo_FieldMask) String() string {
   391  	if fieldMask == nil {
   392  		return "<nil>"
   393  	}
   394  	pathsStr := make([]string, 0, len(fieldMask.Paths))
   395  	for _, path := range fieldMask.Paths {
   396  		pathsStr = append(pathsStr, path.String())
   397  	}
   398  	return strings.Join(pathsStr, ", ")
   399  }
   400  
   401  func (fieldMask *User_AuthInfo_FieldMask) IsFull() bool {
   402  	if fieldMask == nil {
   403  		return false
   404  	}
   405  	presentSelectors := make([]bool, 2)
   406  	for _, path := range fieldMask.Paths {
   407  		if asFinal, ok := path.(*UserAuthInfo_FieldTerminalPath); ok {
   408  			presentSelectors[int(asFinal.selector)] = true
   409  		}
   410  	}
   411  	for _, flag := range presentSelectors {
   412  		if !flag {
   413  			return false
   414  		}
   415  	}
   416  	return true
   417  }
   418  
   419  func (fieldMask *User_AuthInfo_FieldMask) ProtoReflect() preflect.Message {
   420  	return gotenobject.MakeFieldMaskReflection(fieldMask, func(raw string) (gotenobject.FieldPath, error) {
   421  		return ParseUserAuthInfo_FieldPath(raw)
   422  	})
   423  }
   424  
   425  func (fieldMask *User_AuthInfo_FieldMask) ProtoMessage() {}
   426  
   427  func (fieldMask *User_AuthInfo_FieldMask) Reset() {
   428  	if fieldMask != nil {
   429  		fieldMask.Paths = nil
   430  	}
   431  }
   432  
   433  func (fieldMask *User_AuthInfo_FieldMask) Subtract(other *User_AuthInfo_FieldMask) *User_AuthInfo_FieldMask {
   434  	result := &User_AuthInfo_FieldMask{}
   435  	removedSelectors := make([]bool, 2)
   436  
   437  	for _, path := range other.GetPaths() {
   438  		switch tp := path.(type) {
   439  		case *UserAuthInfo_FieldTerminalPath:
   440  			removedSelectors[int(tp.selector)] = true
   441  		}
   442  	}
   443  	for _, path := range fieldMask.GetPaths() {
   444  		if !removedSelectors[int(path.Selector())] {
   445  			result.Paths = append(result.Paths, path)
   446  		}
   447  	}
   448  
   449  	if len(result.Paths) == 0 {
   450  		return nil
   451  	}
   452  	return result
   453  }
   454  
   455  func (fieldMask *User_AuthInfo_FieldMask) SubtractRaw(other gotenobject.FieldMask) gotenobject.FieldMask {
   456  	return fieldMask.Subtract(other.(*User_AuthInfo_FieldMask))
   457  }
   458  
   459  // FilterInputFields generates copy of field paths with output_only field paths removed
   460  func (fieldMask *User_AuthInfo_FieldMask) FilterInputFields() *User_AuthInfo_FieldMask {
   461  	result := &User_AuthInfo_FieldMask{}
   462  	result.Paths = append(result.Paths, fieldMask.Paths...)
   463  	return result
   464  }
   465  
   466  // ToFieldMask is used for proto conversions
   467  func (fieldMask *User_AuthInfo_FieldMask) ToProtoFieldMask() *googlefieldmaskpb.FieldMask {
   468  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   469  	for _, path := range fieldMask.Paths {
   470  		protoFieldMask.Paths = append(protoFieldMask.Paths, path.String())
   471  	}
   472  	return protoFieldMask
   473  }
   474  
   475  func (fieldMask *User_AuthInfo_FieldMask) FromProtoFieldMask(protoFieldMask *googlefieldmaskpb.FieldMask) error {
   476  	if fieldMask == nil {
   477  		return status.Error(codes.Internal, "target field mask is nil")
   478  	}
   479  	fieldMask.Paths = make([]UserAuthInfo_FieldPath, 0, len(protoFieldMask.Paths))
   480  	for _, strPath := range protoFieldMask.Paths {
   481  		path, err := ParseUserAuthInfo_FieldPath(strPath)
   482  		if err != nil {
   483  			return err
   484  		}
   485  		fieldMask.Paths = append(fieldMask.Paths, path)
   486  	}
   487  	return nil
   488  }
   489  
   490  // implement methods required by customType
   491  func (fieldMask User_AuthInfo_FieldMask) Marshal() ([]byte, error) {
   492  	protoFieldMask := fieldMask.ToProtoFieldMask()
   493  	return proto.Marshal(protoFieldMask)
   494  }
   495  
   496  func (fieldMask *User_AuthInfo_FieldMask) Unmarshal(data []byte) error {
   497  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   498  	if err := proto.Unmarshal(data, protoFieldMask); err != nil {
   499  		return err
   500  	}
   501  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   502  		return err
   503  	}
   504  	return nil
   505  }
   506  
   507  func (fieldMask *User_AuthInfo_FieldMask) Size() int {
   508  	return proto.Size(fieldMask.ToProtoFieldMask())
   509  }
   510  
   511  func (fieldMask User_AuthInfo_FieldMask) MarshalJSON() ([]byte, error) {
   512  	return json.Marshal(fieldMask.ToProtoFieldMask())
   513  }
   514  
   515  func (fieldMask *User_AuthInfo_FieldMask) UnmarshalJSON(data []byte) error {
   516  	protoFieldMask := &googlefieldmaskpb.FieldMask{}
   517  	if err := json.Unmarshal(data, protoFieldMask); err != nil {
   518  		return err
   519  	}
   520  	if err := fieldMask.FromProtoFieldMask(protoFieldMask); err != nil {
   521  		return err
   522  	}
   523  	return nil
   524  }
   525  
   526  func (fieldMask *User_AuthInfo_FieldMask) AppendPath(path UserAuthInfo_FieldPath) {
   527  	fieldMask.Paths = append(fieldMask.Paths, path)
   528  }
   529  
   530  func (fieldMask *User_AuthInfo_FieldMask) AppendRawPath(path gotenobject.FieldPath) {
   531  	fieldMask.Paths = append(fieldMask.Paths, path.(UserAuthInfo_FieldPath))
   532  }
   533  
   534  func (fieldMask *User_AuthInfo_FieldMask) GetPaths() []UserAuthInfo_FieldPath {
   535  	if fieldMask == nil {
   536  		return nil
   537  	}
   538  	return fieldMask.Paths
   539  }
   540  
   541  func (fieldMask *User_AuthInfo_FieldMask) GetRawPaths() []gotenobject.FieldPath {
   542  	if fieldMask == nil {
   543  		return nil
   544  	}
   545  	rawPaths := make([]gotenobject.FieldPath, 0, len(fieldMask.Paths))
   546  	for _, path := range fieldMask.Paths {
   547  		rawPaths = append(rawPaths, path)
   548  	}
   549  	return rawPaths
   550  }
   551  
   552  func (fieldMask *User_AuthInfo_FieldMask) SetFromCliFlag(raw string) error {
   553  	path, err := ParseUserAuthInfo_FieldPath(raw)
   554  	if err != nil {
   555  		return err
   556  	}
   557  	fieldMask.Paths = append(fieldMask.Paths, path)
   558  	return nil
   559  }
   560  
   561  func (fieldMask *User_AuthInfo_FieldMask) Set(target, source *User_AuthInfo) {
   562  	for _, path := range fieldMask.Paths {
   563  		val, _ := path.GetSingle(source)
   564  		// if val is nil, then field does not exist in source, skip
   565  		// otherwise, process (can still reflect.ValueOf(val).IsNil!)
   566  		if val != nil {
   567  			path.WithIValue(val).SetTo(&target)
   568  		}
   569  	}
   570  }
   571  
   572  func (fieldMask *User_AuthInfo_FieldMask) SetRaw(target, source gotenobject.GotenObjectExt) {
   573  	fieldMask.Set(target.(*User_AuthInfo), source.(*User_AuthInfo))
   574  }
   575  
   576  func (fieldMask *User_AuthInfo_FieldMask) Project(source *User_AuthInfo) *User_AuthInfo {
   577  	if source == nil {
   578  		return nil
   579  	}
   580  	if fieldMask == nil {
   581  		return source
   582  	}
   583  	result := &User_AuthInfo{}
   584  
   585  	for _, p := range fieldMask.Paths {
   586  		switch tp := p.(type) {
   587  		case *UserAuthInfo_FieldTerminalPath:
   588  			switch tp.selector {
   589  			case UserAuthInfo_FieldPathSelectorProvider:
   590  				result.Provider = source.Provider
   591  			case UserAuthInfo_FieldPathSelectorId:
   592  				result.Id = source.Id
   593  			}
   594  		}
   595  	}
   596  	return result
   597  }
   598  
   599  func (fieldMask *User_AuthInfo_FieldMask) ProjectRaw(source gotenobject.GotenObjectExt) gotenobject.GotenObjectExt {
   600  	return fieldMask.Project(source.(*User_AuthInfo))
   601  }
   602  
   603  func (fieldMask *User_AuthInfo_FieldMask) PathsCount() int {
   604  	if fieldMask == nil {
   605  		return 0
   606  	}
   607  	return len(fieldMask.Paths)
   608  }