Hexabase(ヘキサベース)は企業向けのBaaS(Backend as a Service)を提供しています。認証やデータストア、ファイルストレージ、リアルタイム通知などの機能があり、企業向けのシステム開発に必要な機能をまるっと提供しています。
APIはREST APIとGraphQLを提供しています。そのAPIをラップしたSDKも開発を進めています。SDKは現在、TypeScriptとDart向けに開発しています。Dart向けのSDKは、もちろんFlutterでも利用できます。
この記事ではFlutter SDKについて、インストールとデータストアでのリンクしたデータの取得方法について解説します。
パッケージとソースコード
パッケージはpub.devで公開しています。
ソースコードはGitHubにて公開しています。ライセンスはMIT Licenseです。
hexabase/hexabase-dart: Hexabase SDK for Dart & Flutter
インストール
インストールは dart pub get
で行えます。
dart pub get hexabase
インポート
SDKをインポートします。
import 'package:hexabase/hexabase.dart';
初期化
まずインスタンスを作成します。
var client = Hexabase();
別なファイルで再度インポートした場合には、以下でインスタンスを取得してください。
var client = Hexabase.instance;
リンクについて
リンクはいわゆるリレーションです。データ同士を紐付けることで、関連データとして一度のクエリーでデータを取得できます。
まず最初に管理画面にて、データベース関連を設定します。
- マスター側のデータベース設定を開く
- 「データベース関連の設定」タブを開く
- 「データベース関連」でリンクを張るテーブルを指定する
詳しくは データベースの関連付け | Hexabase 開発ガイド をご覧ください。
関連データの取得
関連データを取得する際には、HexabaseQueryでincludeを指定してください。
await client.setWorkspace('YOUR_WORKSPACE_ID');
var project = await client.currentWorkspace.project(id: 'YOUR_PROJECT_ID');
var datastore = await project.datastore(id: 'YOUR_DATABASE_ID');
// HexabaseQueryオブジェクト
var query = datastore.query();
// include(true)で関連データを取得します
query.per(100).include(true);
// データを取得
var items = await datastore.items(query: query);
関連データの取り出し
関連データを取得する際には、 getAsItem
を利用します。これは items
と同じく HexabaseItem
オブジェクトです。以下は一例です。
item.getAsItem('FIELD_NAME').title
なお、関連データの内容を変更したい場合には以下のようにしてください。
var parent = item.getAsItem('FIELD_NAME');
parent.set("name", "New name");
await parent.save();
まとめ
Dart SDKはFlutterでも利用できます。Flutterで使えると言うことは、iOS/Androidといったスマートフォンアプリやタブレットアプリはもちろん、Webやデスクトップアプリ開発でも利用できます。ぜひHexabaseをDart SDKとともに活用してください。
関連データを用いると、一般的なデータベースのようなリレーションとしてデータを扱えるようになります。現状は取得のみですが、ぜひ活用してください。