Skip to Content
How-To GuidesMoonBitUsing PostgreSQL from a MoonBit Agent

Using PostgreSQL from a MoonBit Agent

The MoonBit SDK already includes the generated package for golem:rdbms/postgres@1.5.0.

Add the Package Import

In the component’s moon.pkg, add an alias for the package:

import { "golemcloud/golem_sdk/interface/golem/rdbms/postgres" @pg, }

Open a Connection

let conn = @pg.DbConnection::open("postgres://user:password@localhost:5432/app") .or_error!("failed to connect to PostgreSQL")

Query Data

PostgreSQL placeholders use $1, $2, …

let result = conn.query( "SELECT $1::text", [@pg.DbValue::Text("hello")], ).or_error!("query failed") let row = result.rows[0] let value = row.values[0] let message = match value { @pg.DbValue::Text(value) => value @pg.DbValue::Varchar(value) => value @pg.DbValue::Bpchar(value) => value _ => abort("unexpected PostgreSQL value") }

Execute Statements

conn.execute( "INSERT INTO notes (id, body) VALUES ($1, $2)", [@pg.DbValue::Int4(1), @pg.DbValue::Text("hello")], ).or_error!("insert failed")

Transactions

let tx = conn.begin_transaction().or_error!("failed to start transaction") tx.execute( "UPDATE notes SET body = $1 WHERE id = $2", [@pg.DbValue::Text("updated"), @pg.DbValue::Int4(1)], ).or_error!("update failed") tx.commit().or_error!("commit failed")
Last updated on