kw service
Зарезервированное слово
Список слов: §1.4
Синтаксис
Service = [ "extern" ] "service" Ident "{" { { Attr } RpcSig } "}" ;Грамматика: Прил. A
Определяется в
- 10.1 Сервисы — service объявляет контракт
- 2.4 Точки входа и порядок запуска — Программа — пакет, содержащий хотя бы одно из
- 3.4 Объявляемые типы — data — тип-произведение с именованными полями (§4.2).
- 9.2 Номера полей и схема — Каждое поле data и каждый вариант enum имеет стабильный тег (номер в wire-формате).
- 13.2 Аутентификация — Провайдеры задаются в cluster { auth { …
- 13.4 Авторизация и политики — Объект политики
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
- 16.3 gRPC и protobuf — import proto "payments.proto" генерирует extern service и типы; вызовы — как к обычным сервисам через connect.
Примеры
policy Orders {
allow get(id) if caller.isUser(db.find(Order, id)?.userId)
allow list, recent if caller.has(role: .Support)
allow * if caller.service("billing")
deny delete unless caller.has(role: .Admin) && caller is .User(mfa: true, ..)
}
@public rpc health() -> Ok
@allow(role: .Admin) rpc purge() -> Ok
@internal rpc create(…) -> OrderСвязанные диагностики
duplicate-impl, impl-signature-mismatch, missing-impl, missing-rpc-impl, unknown-rpc, no-entry-point, unknown-type, schema-attr, schema-break, cluster-auth, data-rights, missing-policy, unknown-policy-target, import-skip