Bu sayfada, hesapları filtrelemek için kullanmanız gereken söz dizimi açıklanmaktadır.
Söz dizimi
Tam sayılar dışındaki tüm değerler çift tırnak (") içine alınmalıdır. Belirli bir alanın hangi değerleri kabul ettiğini öğrenmek için ilgili alanın referans belgelerine bakın.
Aynı sorgudaki birden çok alanı filtrelemek için AND
kullanabilirsiniz. Birden fazla relationship(...)
ve service(...)
filtresini birleştirmek için AND
kullanabilirsiniz.
Birden çok relationship(...)
ve service(...)
filtresinin bir arada kullanıldığı bir örneği aşağıda bulabilirsiniz:
(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))
Bu örnek aşağıdaki hesapları döndürür:
Başka bir hesapla hesap yönetimi ilişkisi bulunan tüm hesaplar ve kabul edilmeyi bekleyen ek bir ilişki var.
"store"
görünen adına sahip ve diğer hesaplarla ilişkisi olan tüm hesaplar.
Aynı alanda birden çok değeri filtrelemek için AND
kullanamazsınız. Örneğin, accountName = "*A*" AND accountName = "*B*"
kullanamazsınız.
Aynı sorgudaki iki alanı filtrelemek için OR
kullanabilirsiniz. OR
operatörünün her iki tarafındaki filtre ölçütlerini parantez içine alın. Örneğin,
(accountName = "storeA") OR (accountName = "storeB")
.
İki alanı birleştirmek için yalnızca OR
kullanabilirsiniz. Örneğin, (accountName = "storeA") OR (accountName = "storeB") OR (accountName =
"storeC")
kullanamazsınız.
AND
ile OR
operatörleri ve relationship(...)
ile service(...)
gibi işlev içi çağrılar dışında parantezlere izin verilmez.
accountName
ve accountIdAlias
gibi dize alanları için belirli bir kelimeyi veya karakter dizisini içeren değerleri yıldız işareti (*
) içine alarak değerleri filtreleyebilirsiniz. Örneğin accountName = "*foo*"
, "storeFoo" gibi foo
içeren bir accountName
içeren tüm hesapları döndürür.
!=
ve *
kullanarak belirli bir sırayı içermeyen değerleri filtreleyebilirsiniz. Örneğin, accountName != "*foo*"
, foo
içermeyen accountName
içeren tüm hesapları döndürür.
Fazladan boşluklar yok sayılır. Örneğin, foo AND bar
, foo
AND bar
ile aynıdır.
Spesifikasyon
Filtreler, AIP filtresi spesifikasyonunun ve resmi EBNF dil bilgisinin bir alt kümesine uyar:
filter
: accountFilterDisj
| accountFilterConj
;
accountFilterDisj
: "(" accountFilterConj " OR " accountFilterConj ")"
;
accountFilterConj
: accountFilter {" AND " accountFilter}
;
accountFilter
: displayNameFilter | relationshipFn
;
displayNameFilter
: "displayName" comparator value
;
relationshipFn
: "relationship(" relationshipConj ")"
;
relationshipConj
: relationshipFilter {" AND " relationshipFilter}
;
relationshipFilter
: "providerId = " numValue
| "callerHasAccessToProviderFilter()"
| "externalAccountId" comparator value
| "accountIdAlias" comparator value
| serviceFn
;
serviceFn
: "service(" serviceConj ")"
;
serviceConj
: serviceFilter {" AND " serviceFilter}
;
serviceFilter
: handshakeStateFilter
| typeFilter
;
handshakeStateFilter
: "handshakeState = " value
;
typeFilter
: "type = " value
;
comparator
: " = " | " != "
;