Docs
Operator Queue
Operator Queue This example builds a queue page for records that need human action. Table Create review_case . Field or relation Type Notes title string Required status select open , in_review , resolved priority select low , normal , high assignee many-to-one relation to enfyra_
Operator Queue
This example builds a queue page for records that need human action.
Table
Create review_case.
| Field or relation | Type | Notes |
|---|---|---|
title |
string | Required |
status |
select | open, in_review, resolved |
priority |
select | low, normal, high |
assignee |
many-to-one relation to enfyra_user |
Optional |
payload |
simple-json | Optional |
Query Pattern
Use server-side filters and bounded pagination. Do not fetch an arbitrary large limit and filter in the browser.
const page = ref(1);
const status = ref('open');
const search = ref('');
const query = computed(() => ({
filter: JSON.stringify({
_and: [
{ status: { _eq: status.value } },
search.value
? { title: { _contains: search.value } }
: {}
]
}),
fields: 'id,title,status,priority,assignee.email,createdAt',
sort: 'priority,-createdAt',
page: page.value,
limit: 25,
meta: 'filterCount'
}));
Claim Action
Create POST /review-cases/claim.
if (!@USER?.id) {
@THROW401();
}
const id = @BODY.id;
if (!id) {
@THROW400('id is required');
}
const updated = await #review_case.update({
id,
data: {
status: 'in_review',
assignee: { id: @USER.id }
}
});
return updated.data?.[0] || null;
Use PermissionGate around the claim button and require POST /review-cases/claim permission.