Hexabase(ヘキサベース)は企業においても安心して利用できるBaaS(Backend as a Service)を提供しています。多くのBaaSがそうであるように、主にフロントエンド開発者に利用してもらいたいと考えています。そこで現在、TypeScript SDKの開発が進められています。
この記事ではHexabase TypeScript SDKのインストールと、データストア操作に伴うサーバーサイドでのコード実行(ActionScript)の使い方を紹介します。
インストール
インストールはnpmやyarnを使って行います。
# npmの場合
npm install @hexabase/hexabase-js
# yarnの場合
yarn add @hexabase/hexabase-js
インポート
インポートすると、 HexabaseClient
というオブジェクトが取得できます。
import { HexabaseClient } from "@hexabase/hexabase-js";
初期化
HexabaseClientを初期化します。
const client = new HexabaseClient();
認証
Hexabaseでは業務利用を想定しているため、利用する際に認証情報が必須になります。最初はメールアドレスとパスワードで認証し、その後はトークンを使ってGraphQLにアクセスします。 client
を使って処理します。
初回の認証は次のようになります。emailとパスワード、またはトークンが必須です。
await client.login({email, password, token});
後はこの client
に対して処理を行います。
データを作る
データはワークスペース → プロジェクト → データストア → データアイテムの順番にデータを取得します。
client.setWorkspace(workspaceId);
// 対象プロジェクト
const project = await client.currentWorkspace.project(projectId);
// 対象データストア
const datastore = await project.datastore(datastoreId);
// 新規レコード
const item = await datastore.item();
ActionScriptについて
Hexabase では、データベースのアイテムに対する操作をアクションと呼びます。このアクションに、Javascriptのコードを割り当てることができます。これがActionScriptです。
ActionScriptでは、アクションを呼び出すことで、割り当てたコードを実行します。
ActionScriptはプロジェクト、またはデータストアの操作に対して実行できます。詳細は以下を参照してください。
ActionScriptの基本 | Hexabase 開発ガイド
プロジェクトのActionScript
プロジェクトの execute
メソッドに対して、関数IDと送信するパラメータを指定して実行します。
const bol = await project
.execute<boolean>('TestFunction', {aaa: 'bbb'});
データストアのActionScript
データストアのActionScriptはデータの新規作成、更新、コピー、削除の4つに対して実行できます。また、ActionScriptはデータの処理前と処理後のどちらかの実行タイミングを指定できます。
データ作成時のActionScript
データ作成時は save
メソッドを呼び出した際に実行されます。 params
はオプションです。
const item = await datastore.item();
item.set('name', 'Test');
await item.save({ parmas: {aaa: 'bbb'}});
この時、 params
の内容はActionScriptの data.as_params
として受け取れます。
async function main (data) {
logger.info(data.as_params); // {aaa: 'bbb'}
}
データ更新時のActionScript
更新時も save
メソッドなのは変わりません。
await item.save({ parmas: {aaa: 'bbb'}});
ステータス変更時のActionScript
ステータスを変更する際には execute
メソッドを使います。実際にステータス更新を行うかどうかは管理画面で設定しますので、単にサーバーサイドでのコード実行を行うだけという使い方もできます。
await item.execute('ExecuteActionScript', {test: 'test'});
注意点
データの作成、更新、ステータス変更時のレスポンスにActionScriptのレスポンスは含められません。ActionScriptは非同期で処理されます。
もしActionScriptの結果を受け取りたい場合には、データストアのフィールドにログを残しておいたり、Webhookを使うと良さそうです。
まとめ
SDKを使うことで、ActionScriptは簡単に呼び出せます。メール送信やSlack通知など、サーバーサイドでしか行えない処理に使ってください。
Hexabaseには他にもバイナリファイルのアップロードや認証などの機能があります。それらの機能も利用してください。