|
|
@@ -196,45 +196,51 @@ func (c Consistency) String() string {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func ParseConsistency(s string) Consistency {
|
|
|
- switch strings.ToUpper(s) {
|
|
|
+func (c Consistency) MarshalText() (text []byte, err error) {
|
|
|
+ return []byte(c.String()), nil
|
|
|
+}
|
|
|
+
|
|
|
+func (c *Consistency) UnmarshalText(text []byte) error {
|
|
|
+ switch string(text) {
|
|
|
case "ANY":
|
|
|
- return Any
|
|
|
+ *c = Any
|
|
|
case "ONE":
|
|
|
- return One
|
|
|
+ *c = One
|
|
|
case "TWO":
|
|
|
- return Two
|
|
|
+ *c = Two
|
|
|
case "THREE":
|
|
|
- return Three
|
|
|
+ *c = Three
|
|
|
case "QUORUM":
|
|
|
- return Quorum
|
|
|
+ *c = Quorum
|
|
|
case "ALL":
|
|
|
- return All
|
|
|
+ *c = All
|
|
|
case "LOCAL_QUORUM":
|
|
|
- return LocalQuorum
|
|
|
+ *c = LocalQuorum
|
|
|
case "EACH_QUORUM":
|
|
|
- return EachQuorum
|
|
|
+ *c = EachQuorum
|
|
|
case "LOCAL_ONE":
|
|
|
- return LocalOne
|
|
|
+ *c = LocalOne
|
|
|
default:
|
|
|
- panic("invalid consistency: " + s)
|
|
|
+ return fmt.Errorf("invalid consistency %q", string(text))
|
|
|
}
|
|
|
+
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
-// ParseConsistencyWrapper wraps gocql.ParseConsistency to provide an err
|
|
|
-// return instead of a panic
|
|
|
-func ParseConsistencyWrapper(s string) (consistency Consistency, err error) {
|
|
|
- defer func() {
|
|
|
- if r := recover(); r != nil {
|
|
|
- var ok bool
|
|
|
- err, ok = r.(error)
|
|
|
- if !ok {
|
|
|
- err = fmt.Errorf("ParseConsistencyWrapper: %v", r)
|
|
|
- }
|
|
|
- }
|
|
|
- }()
|
|
|
- consistency = ParseConsistency(s)
|
|
|
- return consistency, nil
|
|
|
+func ParseConsistency(s string) (consistency Consistency, err error) {
|
|
|
+ err = consistency.UnmarshalText([]byte(strings.ToUpper(s)))
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// ParseConsistencyWrapper is deprecated use ParseConsistency instead.
|
|
|
+var ParseConsistencyWrapper = ParseConsistency
|
|
|
+
|
|
|
+func MustParseConsistency(s string) Consistency {
|
|
|
+ c, err := ParseConsistency(s)
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+ return c
|
|
|
}
|
|
|
|
|
|
type SerialConsistency uint16
|
|
|
@@ -255,6 +261,23 @@ func (s SerialConsistency) String() string {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (s SerialConsistency) MarshalText() (text []byte, err error) {
|
|
|
+ return []byte(s.String()), nil
|
|
|
+}
|
|
|
+
|
|
|
+func (s *SerialConsistency) UnmarshalText(text []byte) error {
|
|
|
+ switch string(text) {
|
|
|
+ case "SERIAL":
|
|
|
+ *s = Serial
|
|
|
+ case "LOCAL_SERIAL":
|
|
|
+ *s = LocalSerial
|
|
|
+ default:
|
|
|
+ return fmt.Errorf("invalid consistency %q", string(text))
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
const (
|
|
|
apacheCassandraTypePrefix = "org.apache.cassandra.db.marshal."
|
|
|
)
|