نحو فیلتر

این صفحه نحوی را که باید برای فیلتر کردن حساب‌ها استفاده کنید توضیح می‌دهد.

نحو

همه مقادیر غیر از اعداد صحیح باید در دو گیومه (") محصور شوند. برای اینکه بدانید یک فیلد خاص چه مقادیری را می پذیرد، به مستندات مرجع آن فیلد مراجعه کنید.

می‌توانید از AND برای فیلتر کردن چندین فیلد در یک کوئری استفاده کنید. همچنین می توانید از AND برای ترکیب چندین فیلتر relationship(...) و service(...) استفاده کنید. در اینجا مثالی آورده شده است که چندین فیلتر relationship(...) و service(...) را ترکیب می کند:

(relationship(service(type = "ACCOUNT_MANAGEMENT") AND service(handshakeState = "PENDING"))) OR (accountName = "store" AND relationship(...))

این مثال حساب های زیر را برمی گرداند:

  • همه حساب‌های دارای رابطه مدیریت حساب با حساب دیگری، و یک رابطه اضافی که در انتظار پذیرش است.

  • همه حساب‌های با نام نمایشی "store" که با حساب‌های دیگر ارتباط دارند.

شما نمی توانید از AND برای فیلتر کردن چندین مقدار در یک فیلد استفاده کنید. برای مثال، نمی‌توانید accountName = "*A*" AND accountName = "*B*" استفاده کنید.

می توانید از OR برای فیلتر کردن دو فیلد در یک پرس و جو استفاده کنید. معیارهای فیلتر را در هر طرف عملگر OR با پرانتز قرار دهید. به عنوان مثال، (accountName = "storeA") OR (accountName = "storeB") .

شما فقط می توانید از OR برای ترکیب دو فیلد استفاده کنید. برای مثال، نمی‌توانید از (accountName = "storeA") OR (accountName = "storeB") OR (accountName = "storeC") استفاده کنید.

پرانتز غیر از عملگرهای AND و OR ، و در فراخوانی‌های تابع، مانند relationship(...) و service(...) مجاز نیست.

برای فیلدهای رشته‌ای مانند accountName و accountIdAlias ، می‌توانید مقادیری را که حاوی کلمه یا دنباله خاصی از کاراکترها هستند با قرار دادن دنباله در ستاره ( * ) فیلتر کنید. برای مثال، accountName = "*foo*" همه حساب‌های دارای accountName حاوی foo را برمی‌گرداند، مانند "storeFoo".

با استفاده از != و * می توانید مقادیری را که حاوی دنباله خاصی نیستند فیلتر کنید. به عنوان مثال، accountName != "*foo*" همه حساب‌های دارای accountName که حاوی foo نیست برمی‌گرداند.

فضاهای سفید اضافی نادیده گرفته می شوند. برای مثال، foo AND bar همان foo AND bar است.

مشخصات

فیلترها زیر مجموعه ای از مشخصات فیلتر AIP و دستور زبان رسمی EBNF آن را دنبال می کنند:

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
    : " = " | " != "
    ;