Skip to Content
How-To GuidesTypeScriptUsing MySQL from a TypeScript Agent

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. Every operation returns a Promise and throws a typed MySqlError on failure.

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 rolls back if the callback throws:

await conn.transaction(async (tx) => { tx.execute("UPDATE notes SET body = ? WHERE id = ?", ["updated", 1]); });

Or drive it manually with begin() / commit() / rollback():

const tx = await conn.begin(); tx.execute("UPDATE notes SET body = ? WHERE id = ?", ["updated", 1]); await tx.commit();