Action Examples
End-to-end action files.
Examples
Bulk Import (Standalone, No Record)
// features/candidates/actions/bulkImport.ts
import { z } from "zod";
import { defineAction, candidates } from "../.quickback/define-action";
export default defineAction({
description: "Import candidates from job board CSV",
path: "/candidates/import",
input: z.object({
data: z.array(z.object({
email: z.string().email(),
name: z.string(),
})),
}),
access: { roles: ["hiring-manager", "recruiter"] },
async execute({ db, input }) {
const inserted = await db
.insert(candidates)
.values(input.data)
.returning();
return { imported: inserted.length };
},
});Scoped Database
The security-filtered db handle inside an action — unsafe mode, raw SQL policy, and sharing code between actions.
Permissions
Name a grant rule once with anyOf / allOf / not over relationships, org roles, scoped roles, and pseudo-roles — then reference it from any firewall as { permission: 'x' }.