LoginSignup
1
1

Hexabase TypeScript SDKを使ったデモ(ステータス変更アプリ)

Posted at

Hexabase(ヘキサベース)は企業においても安心して利用できるBaaS(Backend as a Service)を提供しています。多くのBaaSがそうであるように、主にフロントエンド開発者に利用してもらいたいと考えています。そこで現在、TypeScript SDKの開発が進められています。

この記事ではv2系になって新しくなったHexabase TypeScript SDKのインストールと、データストア(クラウドデータベース)のステータス機能を紹介するデモアプリについて説明します。

デモ

デモはこちらで公開しています。アイテムを作成し、そのアイテムのステータスを変更できるデモです。

1689 stackblitz.com - 1024163443.jpg

Hexabase Status Demo - StackBlitz

インストール

インストールはnpmやyarnを使って行います。

# npmの場合
npm install @hexabase/hexabase-js

# yarnの場合
yarn add @hexabase/hexabase-js

インポート

インポートすると、 HexabaseClient というオブジェクトが取得できます。

import { HexabaseClient, Item } from "@hexabase/hexabase-js";

初期化

HexabaseClientを初期化します。

// 本番閑居向け
const client = new HexabaseClient();

// 開発環境向け
const client = new HexabaseClient('dev');

なお、すでに認証済みだった場合は setToken メソッドを使ってトークンをセットすることもできます。今回はパブリックトークンを使っており、そのトークンを下記メソッドでセットしています。

// 初期設定
const init = async () => {
	await client.setToken(process.env.NEXT_PUBLIC_TOKEN!);
	await client.setWorkspace(process.env.NEXT_PUBLIC_WORKSPACE_ID!);
	setLogin(true);
};

ステータスの設計

Hexabaseでは、データベースのアイテムに対してステータスを設定できます。ステータスは管理画面で設計します。

1686 app.hexabase.com - 1023140353.jpg

ステータスを準備したら、そのステータスを変更するためのアクションを設計します。

1687_app_hexabase_com_-_1023140513.jpg

今回の例で言うと、ステータスは以下のようにしか遷移しません。このステータスを遷移させるのがステータスアクションになります。

image.png

ステータスアクションを実行することで、ステータスが別なものに変わります。

アイテムを作成する

アイテムはデータストアの item メソッドで作成します。

const create = async () => {
	// プロジェクトの取得
	const project = await client.currentWorkspace.project(
		process.env.NEXT_PUBLIC_PROJECT_ID!
	);
	// データストアの取得
	const datastore = await project.datastore(
		process.env.NEXT_PUBLIC_DATASTORE_ID!
	);
	// アイテムの作成
	const item = await datastore.item();
	await item.set('Title', 'new Item').save();
	// アイテム・ステータスのセット
	setItem(item);
	setStatus(item.status());
};

上記コードの最後で実行している status メソッドで、現在のステータスが文字列で取得できます。新規保存した直後であれば、デフォルトのステータスが返ってきます。

item.status();
// -> first

ステータスアクションの取得

あるステータスから別なステータスに変更できるアクション「ステータスアクション」を取得します。これは statusActions プロパティで取得できます。入っているのは StatusAction の配列です。

<ul>
	{item.statusActions.map(sa => (
		<li key={sa.id} onClick={() => change(sa.name)}>
			{sa.name}
		</li>
	))}
</ul>

ステータスの変更

ステータスを変更する際には、ステータスアクションのラベルやIDなどを指定します。実行すると、アイテムのステータスが更新され、 statusActions の内容も変わります。

// ステータス変更時のアクション
const change = async (status: string) => {
	await item.execute(status);
	// 新しいステータスを設定
	setStatus(item.status());
};

ぜひデモで動作を確認してください。

まとめ

ステータスを使うことで、アイテムの状態管理を実現できます。ステータスを見れば、アイテムがどのような状態にあるのかがわかります。ステータスは直接変更できないので、間違った更新につながることはありません。

Hexabaseには他にもファイルストレージやスクリプトなどの機能があります。それらの機能も利用してください。

Hexabase | 新規事業向け開発・競争領域でのDX実現をサポート

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1