Collection Spec
A _collection/spec
is set of smart functions that are attached to a particular collection. Any time that collection appears in a transaction, regardless of who issues the transaction, the smart functions attached to the _collection/spec
will execute.
If all of the smart functions return true
, the transaction will succeed. If any of the smart functions return false
, it will fail.
Uses
The most common use for collection specs to make sure a certain predicate is included in a collection. For example, the below spec, the function makes sure person/fullName
is required.
[
{
"_id": ["_collection/name", "person"],
"spec": ["_fn$fullNameReq"],
"specDoc": "A person is required to have a fullName."
},
{
"_id": "_fn$fullNameReq",
"name": "fullNameReq",
"code": "(boolean (get (query (str \"{\\\"select\\\": [\\\"*\\\"], \\\"from\\\":\" (?sid) \"}\")) \"person/fullName\"))"
}
]