70 lines
1.4 KiB
Go
70 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
|
||
|
}
|