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

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