github.com/googleapis/api-linter@v1.65.2/rules/aip0164/resource_expire_time_field.go (about)

     1  package aip0164
     2  
     3  import (
     4  	"github.com/googleapis/api-linter/lint"
     5  	"github.com/googleapis/api-linter/rules/internal/utils"
     6  	"github.com/jhump/protoreflect/desc"
     7  )
     8  
     9  // Resources supporting soft delete must have an expire_time field.
    10  var resourceExpireTimeField = &lint.MessageRule{
    11  	Name: lint.NewRuleName(164, "resource-expire-time-field"),
    12  	OnlyIf: func(m *desc.MessageDescriptor) bool {
    13  		resource := m.GetName()
    14  		return utils.FindMethod(m.GetFile(), "Undelete"+resource) != nil
    15  	},
    16  	LintMessage: func(m *desc.MessageDescriptor) []lint.Problem {
    17  		// for backwards compatibility, do not lint on expire_time.
    18  		// previously expire_time was the recommended term.
    19  		if m.FindFieldByName("expire_time") != nil {
    20  			return nil
    21  		}
    22  		if m.FindFieldByName("purge_time") != nil {
    23  			return nil
    24  		}
    25  		return []lint.Problem{{
    26  			Message:    "Resources supporting soft delete must have a `google.protobuf.Timestamp purge_time` field.",
    27  			Descriptor: m,
    28  		}}
    29  	},
    30  }