A lexicon-driven AppView for ATProto.
Something went wrong. Try again.
Markdown
Query: List or Fetch Records #
This query handles both single-record lookups (when a uri param is provided) and paginated listing.
Lexicon type: query
function handle()
if params.uri then
local record = db.get(params.uri)
if not record then
return { error = "record not found" }
end
return { record = record }
end
return db.query({
collection = collection,
did = params.did,
limit = tonumber(params.limit) or 20,
offset = tonumber(params.cursor) or 0,
})
end
How it works #
- If a
uriquery parameter is provided, fetch that single record withdb.getand return it. If it doesn't exist, return a structured error (usingerror()would trigger a 500 response). - Otherwise, list records from the target collection using
db.query, with optional filtering bydidand pagination vialimit/offset. Since query parameters arrive as strings,tonumber()converts them to numbers.
Usage #
GET /xrpc/xyz.statusphere.listRecords?limit=10
GET /xrpc/xyz.statusphere.listRecords?did=did:plc:abc
GET /xrpc/xyz.statusphere.listRecords?uri=at://did:plc:abc/xyz.statusphere.record/abc123
Use case #
This is a good default query script when you want a single endpoint that serves double duty: list browsing for feeds/timelines and direct record fetching for detail views.