Stored Procedures

July 3, 2026 ยท View on GitHub

MongrelDB Kit consumes MongrelDB stored procedures through the same declarative JSON procedure spec used by the engine. TypeScript, Rust, Python, CLI, and remote clients all pass the same shape.

TypeScript

import { procedure } from '@visorcraft/mongreldb-kit';

const readUsers = procedure({
  name: 'read_users',
  mode: 'read_only',
  body: {
    steps: [{ kind: 'native_query', id: 'read', table: 'users', conditions: [], projection: [1, 2] }],
    return_value: { kind: 'step_rows', value: 'read' }
  }
});

db.createProcedureSync(readUsers);
const result = db.callProcedureSync('read_users');

Rust

Use mongreldb_kit_core::ProcedureSpec and pass it to Database::create_procedure, replace_procedure, drop_procedure, or call_procedure.

Python

Database.create_procedure, replace_procedure, drop_procedure, and call_procedure accept plain dicts or JSON strings.

CLI

mongreldb-kit procedure install ./data ./procedure.json
mongreldb-kit procedure call ./data read_users --args '{"status":"active"}'
mongreldb-kit procedure list ./data
mongreldb-kit procedure drop ./data read_users

Procedure migration ops are included in content-aware migration checksums: createProcedure, replaceProcedure, and dropProcedure.