Documentation ¶
Overview ¶
Example ¶
package main import ( "context" "fmt" "os" "time" "github.com/sacloud/libsacloud/v2/sacloud" "github.com/sacloud/libsacloud/v2/sacloud/search" ) func main() { // API Keys token := os.Getenv("SAKURACLOUD_ACCESS_TOKEN") secret := os.Getenv("SAKURACLOUD_ACCESS_TOKEN_SECRET") zone := os.Getenv("SAKURACLOUD_ZONE") // API Client caller := sacloud.NewClient(token, secret) serverOp := sacloud.NewArchiveOp(caller) // ****************************************** // Find // ****************************************** // 名称に"Example"を含むサーバを検索 condition := &sacloud.FindCondition{ Filter: search.Filter{ search.Key("Name"): search.PartialMatch("Example"), }, } searched, err := serverOp.Find(context.Background(), zone, condition) if err != nil { panic(err) } fmt.Printf("searched: %#v", searched) // 以下の条件で検索 // - 名称に"test"と"example"を含む // - ゾーンが"is1a"または"is1b" // - 作成日時が1週間以上前 condition = &sacloud.FindCondition{ Filter: search.Filter{ search.Key("Name"): search.AndEqual("test", "example"), search.Key("Zone.Name"): search.OrEqual("is1a", "is1b"), search.KeyWithOp("CreatedAt", search.OpLessThan): time.Now().Add(-7 * 24 * time.Hour), }, } searched, err = serverOp.Find(context.Background(), zone, condition) if err != nil { panic(err) } fmt.Printf("searched: %#v", searched) }
Output:
Index ¶
Examples ¶
Constants ¶
const ( // OpEqual = OpEqual = ComparisonOperator("") // OpGreaterThan > OpGreaterThan = ComparisonOperator(">") // OpGreaterEqual >= OpGreaterEqual = ComparisonOperator(">=") // OpLessThan < OpLessThan = ComparisonOperator("<") // OpLessEqual <= OpLessEqual = ComparisonOperator("<=") )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EqualExpression ¶
type EqualExpression struct { Op LogicalOperator Conditions []interface{} }
EqualExpression Equalで比較する際の条件
func AndEqual ¶
func AndEqual(conditions ...string) *EqualExpression
AndEqual 部分一致(Partial Match)かつAND条件を示すEqualFilterを作成
func ExactMatch ¶
func ExactMatch(conditions ...string) *EqualExpression
ExactMatch 完全一致(Partial Match)かつOR条件を示すEqualFilterを作成
OrEqualのエイリアス
func OrEqual ¶
func OrEqual(conditions ...interface{}) *EqualExpression
OrEqual 完全一致(Partial Match)かつOR条件を示すEqualFilterを作成
func PartialMatch ¶
func PartialMatch(conditions ...string) *EqualExpression
PartialMatch 部分一致(Partial Match)かつAND条件を示すEqualFilterを作成
AndEqualのエイリアス
func (*EqualExpression) MarshalJSON ¶
func (eq *EqualExpression) MarshalJSON() ([]byte, error)
MarshalJSON .
type Filter ¶
type Filter map[FilterKey]interface{}
Filter 検索系APIでの検索条件
Note: libsacloudではリクエスト時に`X-Sakura-Bigint-As-Int`ヘッダを指定することで 文字列で表されているBitintをintとして取得している。 このため、libsacloud側では数値型に見える項目でもさくらのクラウド側では文字列となっている場合がある。 これらの項目ではOpEqual以外の演算子は利用できない。 また、これらの項目でスカラ値を検索条件に与えた場合は部分一致ではなく完全一致となるため注意。
func (Filter) MarshalJSON ¶
MarshalJSON 検索系APIコール時のGETパラメータを出力するためのjson.Marshaler実装
type FilterKey ¶
type FilterKey struct { // フィールド名 Field string // 演算子 Op ComparisonOperator }
FilterKey 検索条件(Filter)のキー
func KeyWithOp ¶
func KeyWithOp(field string, op ComparisonOperator) FilterKey
KeyWithOp 演算子を指定してキーを作成
type LogicalOperator ¶
type LogicalOperator int
LogicalOperator フィルター論理演算子
const ( // OpAnd AND OpAnd LogicalOperator = iota // OpOr OR OpOr )