mirror of https://github.com/hashicorp/consul
Expand the QueryOptions and QueryMeta interfaces (#6545)
In a previous PR I made it so that we had interfaces that would work enough to allow blockingQueries to work. However to complete this we need all fields to be settable and gettable. Notes: • If Go ever gets contracts/generics then we could get rid of all the Getters/Setters • protoc / protoc-gen-gogo are going to generate all the getters for us. • I copied all the getters/setters from the protobuf funcs into agent/structs/protobuf_compat.go • Also added JSON marshaling funcs that use jsonpb for protobuf types.pull/6557/head
parent
fdd10dd8b8
commit
76cf54068b
@ -0,0 +1,271 @@
|
||||
package structs
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// QueryOptionsCompat is the interface that both the structs.QueryOptions
|
||||
// and the agentpb.QueryOptions structs need to implement so that they
|
||||
// can be operated on interchangeably
|
||||
type QueryOptionsCompat interface {
|
||||
GetToken() string
|
||||
SetToken(string)
|
||||
GetMinQueryIndex() uint64
|
||||
SetMinQueryIndex(uint64)
|
||||
GetMaxQueryTime() time.Duration
|
||||
SetMaxQueryTime(time.Duration)
|
||||
GetAllowStale() bool
|
||||
SetAllowStale(bool)
|
||||
GetRequireConsistent() bool
|
||||
SetRequireConsistent(bool)
|
||||
GetUseCache() bool
|
||||
SetUseCache(bool)
|
||||
GetMaxStaleDuration() time.Duration
|
||||
SetMaxStaleDuration(time.Duration)
|
||||
GetMaxAge() time.Duration
|
||||
SetMaxAge(time.Duration)
|
||||
GetMustRevalidate() bool
|
||||
SetMustRevalidate(bool)
|
||||
GetStaleIfError() time.Duration
|
||||
SetStaleIfError(time.Duration)
|
||||
GetFilter() string
|
||||
SetFilter(string)
|
||||
}
|
||||
|
||||
// QueryMetaCompat is the interface that both the structs.QueryMeta
|
||||
// and the agentpb.QueryMeta structs need to implement so that they
|
||||
// can be operated on interchangeably
|
||||
type QueryMetaCompat interface {
|
||||
GetLastContact() time.Duration
|
||||
SetLastContact(time.Duration)
|
||||
GetKnownLeader() bool
|
||||
SetKnownLeader(bool)
|
||||
GetIndex() uint64
|
||||
SetIndex(uint64)
|
||||
GetConsistencyLevel() string
|
||||
SetConsistencyLevel(string)
|
||||
}
|
||||
|
||||
// GetToken helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetToken() string {
|
||||
if m != nil {
|
||||
return m.Token
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// GetMinQueryIndex helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetMinQueryIndex() uint64 {
|
||||
if m != nil {
|
||||
return m.MinQueryIndex
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// GetMaxQueryTime helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetMaxQueryTime() time.Duration {
|
||||
if m != nil {
|
||||
return m.MaxQueryTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// GetAllowStale helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetAllowStale() bool {
|
||||
if m != nil {
|
||||
return m.AllowStale
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetRequireConsistent helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetRequireConsistent() bool {
|
||||
if m != nil {
|
||||
return m.RequireConsistent
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetUseCache helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetUseCache() bool {
|
||||
if m != nil {
|
||||
return m.UseCache
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetMaxStaleDuration helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetMaxStaleDuration() time.Duration {
|
||||
if m != nil {
|
||||
return m.MaxStaleDuration
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// GetMaxAge helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetMaxAge() time.Duration {
|
||||
if m != nil {
|
||||
return m.MaxAge
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// GetMustRevalidate helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetMustRevalidate() bool {
|
||||
if m != nil {
|
||||
return m.MustRevalidate
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetStaleIfError helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetStaleIfError() time.Duration {
|
||||
if m != nil {
|
||||
return m.StaleIfError
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// GetFilter helps implement the QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryOptions) GetFilter() string {
|
||||
if m != nil {
|
||||
return m.Filter
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// SetToken is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetToken(token string) {
|
||||
q.Token = token
|
||||
}
|
||||
|
||||
// SetMinQueryIndex is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetMinQueryIndex(minQueryIndex uint64) {
|
||||
q.MinQueryIndex = minQueryIndex
|
||||
}
|
||||
|
||||
// SetMaxQueryTime is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetMaxQueryTime(maxQueryTime time.Duration) {
|
||||
q.MaxQueryTime = maxQueryTime
|
||||
}
|
||||
|
||||
// SetAllowStale is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetAllowStale(allowStale bool) {
|
||||
q.AllowStale = allowStale
|
||||
}
|
||||
|
||||
// SetRequireConsistent is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetRequireConsistent(requireConsistent bool) {
|
||||
q.RequireConsistent = requireConsistent
|
||||
}
|
||||
|
||||
// SetUseCache is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetUseCache(useCache bool) {
|
||||
q.UseCache = useCache
|
||||
}
|
||||
|
||||
// SetMaxStaleDuration is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetMaxStaleDuration(maxStaleDuration time.Duration) {
|
||||
q.MaxStaleDuration = maxStaleDuration
|
||||
}
|
||||
|
||||
// SetMaxAge is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetMaxAge(maxAge time.Duration) {
|
||||
q.MaxAge = maxAge
|
||||
}
|
||||
|
||||
// SetMustRevalidate is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetMustRevalidate(mustRevalidate bool) {
|
||||
q.MustRevalidate = mustRevalidate
|
||||
}
|
||||
|
||||
// SetStaleIfError is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetStaleIfError(staleIfError time.Duration) {
|
||||
q.StaleIfError = staleIfError
|
||||
}
|
||||
|
||||
// SetFilter is needed to implement the structs.QueryOptionsCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryOptions) SetFilter(filter string) {
|
||||
q.Filter = filter
|
||||
}
|
||||
|
||||
//
|
||||
func (m *QueryMeta) GetIndex() uint64 {
|
||||
if m != nil {
|
||||
return m.Index
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// GetLastContact helps implement the QueryMetaCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryMeta) GetLastContact() time.Duration {
|
||||
if m != nil {
|
||||
return m.LastContact
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// GetKnownLeader helps implement the QueryMetaCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryMeta) GetKnownLeader() bool {
|
||||
if m != nil {
|
||||
return m.KnownLeader
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetConsistencyLevel helps implement the QueryMetaCompat interface
|
||||
// Copied from agent/agentpb/common.pb.go
|
||||
func (m *QueryMeta) GetConsistencyLevel() string {
|
||||
if m != nil {
|
||||
return m.ConsistencyLevel
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// SetLastContact is needed to implement the structs.QueryMetaCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryMeta) SetLastContact(lastContact time.Duration) {
|
||||
q.LastContact = lastContact
|
||||
}
|
||||
|
||||
// SetKnownLeader is needed to implement the structs.QueryMetaCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryMeta) SetKnownLeader(knownLeader bool) {
|
||||
q.KnownLeader = knownLeader
|
||||
}
|
||||
|
||||
// SetIndex is needed to implement the structs.QueryMetaCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryMeta) SetIndex(index uint64) {
|
||||
q.Index = index
|
||||
}
|
||||
|
||||
// SetConsistencyLevel is needed to implement the structs.QueryMetaCompat interface
|
||||
// Copied from agent/agentpb/common.go
|
||||
func (q *QueryMeta) SetConsistencyLevel(consistencyLevel string) {
|
||||
q.ConsistencyLevel = consistencyLevel
|
||||
}
|
Loading…
Reference in new issue