@ocap/statedb-qldb

OCAP statedb adapter that uses amazon qldb as backend statedb

Usage no npm install needed!

<script type="module">
  import ocapStatedbQldb from 'https://cdn.skypack.dev/@ocap/statedb-qldb';
</script>

README

@ocap/statedb-qldb

styled with prettier

OCAP statedb adapter that uses Amazon QLDB as backend statedb.

Requirements

Please follow https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.nodejs.html to setup your AWS SDK credentials and Amazon QLDB ledgers. This adapter will create tables in the ledger, but not the ledger itself.

Install

npm install @ocap/statedb-qldb
// or
yarn add @ocap/statedb-qldb

Usage

const QLDBStateDB = require('@ocap/statedb-qldb');

const db = new QLDBStateDB({
  ledgerName: 'qldb-statedb-dev',
  clientOptions: {
    region: 'ap-northeast-1',
    accessKeyId: process.env.AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_ACCESS_KEY_SECRET,
  },
});

db.onReady(async () => {
  const account = {
    address: 'z1VUFgtw9JSENAswYm5vqdpg461oi6JPEdP',
    balance: '100000000000000000000000000',
    gasBalance: '0',
    nonce: 2,
    numTxs: 1,
    numAssets: 0,
    migratedTo: [],
    migratedFrom: [],
    stake: null,
    context: {
      genesisTime: '2021-02-02T02:17:48.141Z',
      genesisTx: '',
      renaissanceTime: '2021-02-02T02:17:48.141Z',
      renaissanceTx: '',
    },
    moniker: 'system',
  };

  await db.driver.executeLambda(async (txn) => {
    const exist = await db.account.get(account.address, { txn });
    console.log('account', { exist });

    if (!exist) {
      const created = await db.account.create(account.address, account, { txn });
      console.log('account', { created });
    }

    const count = await db.account.count({ txn });
    console.log('account', { count });
  });
});