616b4b71a1
Implement `String` / `FromString` method pair in all levels of enum definitions. From now `String()` returns canonical protojson-compatible values. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
package netmap
|
|
|
|
import (
|
|
"github.com/nspcc-dev/neofs-api-go/v2/netmap"
|
|
)
|
|
|
|
// Clause is an enumeration of selector modifiers
|
|
// that shows how the node set will be formed.
|
|
type Clause uint32
|
|
|
|
const (
|
|
ClauseUnspecified Clause = iota
|
|
|
|
// ClauseSame is a selector modifier to select only nodes having the same value of bucket attribute.
|
|
ClauseSame
|
|
|
|
// ClauseDistinct is a selector modifier to select nodes having different values of bucket attribute.
|
|
ClauseDistinct
|
|
)
|
|
|
|
// ClauseFromV2 converts v2 Clause to Clause.
|
|
func ClauseFromV2(c netmap.Clause) Clause {
|
|
switch c {
|
|
default:
|
|
return ClauseUnspecified
|
|
case netmap.Same:
|
|
return ClauseSame
|
|
case netmap.Distinct:
|
|
return ClauseDistinct
|
|
}
|
|
}
|
|
|
|
// ToV2 converts Clause to v2 Clause.
|
|
func (c Clause) ToV2() netmap.Clause {
|
|
switch c {
|
|
default:
|
|
return netmap.UnspecifiedClause
|
|
case ClauseDistinct:
|
|
return netmap.Distinct
|
|
case ClauseSame:
|
|
return netmap.Same
|
|
}
|
|
}
|
|
|
|
// String returns string representation of Clause.
|
|
//
|
|
// String mapping:
|
|
// * ClauseDistinct: DISTINCT;
|
|
// * ClauseSame: SAME;
|
|
// * ClauseUnspecified, default: CLAUSE_UNSPECIFIED.
|
|
func (c Clause) String() string {
|
|
return c.ToV2().String()
|
|
}
|
|
|
|
// FromString parses Clause from a string representation.
|
|
// It is a reverse action to String().
|
|
//
|
|
// Returns true if s was parsed successfully.
|
|
func (c *Clause) FromString(s string) bool {
|
|
var g netmap.Clause
|
|
|
|
ok := g.FromString(s)
|
|
|
|
if ok {
|
|
*c = ClauseFromV2(g)
|
|
}
|
|
|
|
return ok
|
|
}
|