kw db
Контекстное слово — список эффектов после возвращаемого типа (§6.2)
Список слов: §1.4
Синтаксис
Effect = "io" | "net" | "db" | "time" | "rand" | Ident ;Грамматика: Прил. A
Определяется в
- 11.2 Транзакция базы данных — Тело выполняется в транзакции базы db.
- 12.8 Встроенное хранилище и таблицы — Хранилище на каждом узле роли journal, репликация — Raft на шард.
- 6.2 Эффекты — Набор эффектов пишется после возвращаемого типа через запятую
- 13.4 Авторизация и политики — Объект политики
- 5.9 Выражения запросов — Форма: from x in источник (where e)\* (order by e (asc|desc)?, …)?
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
- 15.1 comptime — comptime fn выполняется только при компиляции; comptime { …
- 18.2 Утверждения и фикстуры — assert expr выполняется во всех профилях, включая prod (профили отключают только контракты, §6.7, и вывод dbg, §2.2); при падении печатает з
Примеры
atomic(db) {
db.insert(order)
db.update(User, uid) { ordersCount += 1 }
emit OrderEvents(OrderEvent.Created(order.id))
}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Связанные диагностики
atomic-db-effects, cross-shard-tx, query-not-sql, shard-count-clamped, table-schema, effects, data-rights, missing-policy, unknown-policy-target, comptime-error, not-comptime, fixture-yield