Using MySQL from a TypeScript Agent
The TypeScript SDK ships a typed MySQL helper built on the
golem:rdbms/mysql@1.5.0 host interface. Connection queries and transaction
commit/rollback return promises. Transaction query, queryValues, execute,
and run are synchronous. Connection close() is currently a synchronous no-op;
resources are GC-managed, not deterministically released by close(). Failures throw a typed MySqlError.
Imports
import { MySql } from "@golemcloud/golem-ts-sdk";MySql.open(url, options?)— open a connection.MySql.*— explicit rich-type parameter wrappers (MySql.varchar,MySql.int,MySql.decimal, …).
Open a Connection
const conn = await MySql.open("mysql://user:password@localhost:3306/app");Query Data
MySQL placeholders use ?. Plain JS values are encoded automatically
(string → varchar, integer → int/bigint, etc.); wrap a value in a MySql.*
helper to pin an exact type. Rows come back as decoded { columnName: value }
records.
const result = await conn.query("SELECT ? AS message", ["hello"]);
const message = result.rows[0]?.message as string;Execute Statements
execute returns the number of affected rows.
const affected = await conn.execute("INSERT INTO notes (id, body) VALUES (?, ?)", [
1,
"hello",
]);Transactions
Run a block inside a transaction — it commits on success and attempts rollback if the callback or commit fails, preserving the original error even if rollback fails:
await conn.transaction(async (tx) => {
tx.execute("UPDATE notes SET body = ? WHERE id = ?", ["updated", 1]);
});