You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
package models |
|
|
|
import ( |
|
"errors" |
|
"strings" |
|
) |
|
|
|
// ConsistencyLevel represent a required replication criteria before a write can |
|
// be returned as successful. |
|
// |
|
// The consistency level is handled in open-source InfluxDB but only applicable to clusters. |
|
type ConsistencyLevel int |
|
|
|
const ( |
|
// ConsistencyLevelAny allows for hinted handoff, potentially no write happened yet. |
|
ConsistencyLevelAny ConsistencyLevel = iota |
|
|
|
// ConsistencyLevelOne requires at least one data node acknowledged a write. |
|
ConsistencyLevelOne |
|
|
|
// ConsistencyLevelQuorum requires a quorum of data nodes to acknowledge a write. |
|
ConsistencyLevelQuorum |
|
|
|
// ConsistencyLevelAll requires all data nodes to acknowledge a write. |
|
ConsistencyLevelAll |
|
) |
|
|
|
var ( |
|
// ErrInvalidConsistencyLevel is returned when parsing the string version |
|
// of a consistency level. |
|
ErrInvalidConsistencyLevel = errors.New("invalid consistency level") |
|
) |
|
|
|
// ParseConsistencyLevel converts a consistency level string to the corresponding ConsistencyLevel const. |
|
func ParseConsistencyLevel(level string) (ConsistencyLevel, error) { |
|
switch strings.ToLower(level) { |
|
case "any": |
|
return ConsistencyLevelAny, nil |
|
case "one": |
|
return ConsistencyLevelOne, nil |
|
case "quorum": |
|
return ConsistencyLevelQuorum, nil |
|
case "all": |
|
return ConsistencyLevelAll, nil |
|
default: |
|
return 0, ErrInvalidConsistencyLevel |
|
} |
|
}
|
|
|