Skip to Content
How-To GuidesMoonBitUsing Apache Ignite from a MoonBit Agent

Using Apache Ignite from a MoonBit Agent

The MoonBit SDK already includes the generated package for golem:rdbms/ignite2@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/ignite2" @ignite, }

Open a Connection

Ignite uses thin-client URLs like ignite://host:10800.

let conn = @ignite.DbConnection::open("ignite://127.0.0.1:10800") .or_error!("failed to connect to Ignite")

Query Data

Ignite placeholders use ?.

let result = conn.query( "SELECT ?", [@ignite.DbValue::DbString("hello")], ).or_error!("query failed") let row = result.rows[0] let value = row.values[0] let message = match value { @ignite.DbValue::DbString(value) => value _ => abort("unexpected Ignite value") }

Execute Statements

conn.execute( #|CREATE TABLE IF NOT EXISTS notes ( #| id INT PRIMARY KEY, #| body VARCHAR #|) WITH "CACHE_NAME=notes" , [], ).or_error!("create table failed")

Include WITH "CACHE_NAME=..." when creating tables through Ignite SQL.

Transactions

let tx = conn.begin_transaction().or_error!("failed to start transaction") tx.execute( "INSERT INTO notes (id, body) VALUES (?, ?)", [@ignite.DbValue::DbInt(1), @ignite.DbValue::DbString("hello")], ).or_error!("insert failed") tx.commit().or_error!("commit failed")
Last updated on