with one click
hive-handler
How to create event handlers in Hive framework
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
How to create event handlers in Hive framework
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Hive framework structure and conventions. Apply when working with this codebase.
How to create external services in Hive framework
How authentication works in Hive framework
Database operations in Hive framework
How to create API endpoints in Hive framework
Schema mappings for auto-syncing embedded documents
| name | hive-handler |
| description | How to create event handlers in Hive framework |
| globs | ["src/resources/**/handlers/*.js"] |
| alwaysApply | false |
Handlers react to database events automatically.
Location: /src/resources/{name}/handlers/{handlerName}.js
import db from 'db';
const myService = db.services.myResource;
myService.on('created', async ({ doc }) => {
// Handle creation
});
myService.on('updated', async ({ doc, prevDoc }) => {
// Handle update
});
myService.on('removed', async ({ doc }) => {
// Handle removal
});
| Event | Payload | Trigger |
|---|---|---|
created | { doc } | After service.create() |
updated | { doc, prevDoc } | After service.updateOne/Many() |
removed | { doc } | After service.remove() |
Create related record:
taskService.on('created', async ({ doc }) => {
await eventService.create({
type: 'task.created',
data: { task: doc },
project: doc.project,
});
});
Update parent on child change:
docService.on('created', async ({ doc }) => {
if (doc.role === 'case-study') {
await projectService.updateOne(
{ _id: doc.project._id },
(p) => ({ ...p, caseStudy: doc })
);
}
});
React to specific field change:
import ifUpdated from 'helpers/db/ifUpdated';
taskService.on('updated', ifUpdated(['status'], async ({ doc, prevDoc }) => {
// Only runs when status changed
}));
Cleanup on delete:
docService.on('removed', async ({ doc }) => {
await eventService.remove({ 'data.doc._id': doc._id });
});
atomic.update for silent bulk updates (no events)ifUpdated helper to filter field changes