1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FoundryでRelational Databeseを使いデータベースとのやりとりを行う簡単なAPIを作成してみた

Last updated at Posted at 2023-01-05

目次

  1. はじめに
  2. 実装方法
  3. 最後に

はじめに

Foundry(旧Fabric)のIntegration Serviceでは、
Service Typeにさまざまなアダプターを使用することができます。
スクリーンショット 0004-12-22 18.23.40.png

その中でもRelational Databaseを選択すると、
自分で作成したデータベースをエンドポイントとして接続することができ、
テーブル内のデータに対してCRUD(作成、読み取り、更新、削除)操作を実行することができます。

今回は、Relational Databaseの活用方法についてご紹介したいと思います。

ご紹介する範囲は以下の赤枠部分となります。
個別に立てたデータベースから、Integration Serviceを使ってデータを取得し
フロントAppに表示する方法についてご紹介します。
スクリーンショット (168).png

実装方法

では早速実装方法を紹介します。
今回独自に作成したテーブルは以下のような構成となっています。

スクリーンショット 0004-12-22 18.28.16.png
ユーザー管理をするためのidnameだけを追加したm_userテーブルを作成しました。

このm_userテーブルに対して、
Integration Serviceを使ってCRUD(作成、読み取り、更新、削除)処理を行うAPIを作成していきます。

サービス作成

FoundryのIntegration Serviceタブをクリックし、
Add New Serviceをクリックします。
スクリーンショット_0004-12-26_16_41_06.png

Service Typeは、Relational Detabaseを選択します。
スクリーンショット_0004-12-26_16_42_12.png

Relational Detabaseを選択すると以下のような表示になるので、
Detabaseに「Mysql」、
Database Connection URLに対象データベースの接続先、
UserIDとPasswordにデータベース作成時に設定したユーザーIDとパスワードと入力してください。
db作成.png

設定したら一度テスト接続をしてみます。
DB作成_テスト成功.png

接続ができたら一番下にあるSAVE&ADD OPERATIONで保存しましょう。

AuthenticationにIdentity Serviceのサービス名を指定すると、
Identity Serviceで認証成功したユーザーのみアクセス可能となります。
必要に応じて使ってみてください。
スクリーンショット 0004-12-26 16.53.03.png

オペレーション作成

次にオペレーションの作成をします。
オペレーションのプルダウンをクリックすると、
作成可能な処理の一覧が表示されます。

作成したい処理にチェックを入れてAdd Operationをクリックしましょう。
今回は、CRUD処理を実行したいので次のようにチェックを入れました。
operation作成.png

しばらくすると、チェックを入れた処理が自動で作成されます。
Create処理の場合、データベース名_テーブル名_createのような名前でそれぞれ作成されます。
(後でオペレーションの名前を変更することも可能です)
スクリーンショット_0004-12-26_17_02_08.png

処理の中身を見てみると、自動的にカラムが追加されすぐに使える状態で作成されていることがわかります。
スクリーンショット_0004-12-26_17_20_08.png

これでAPIの作成は完了です!
チェックボックスを入れてボタンを押すだけなのでとっても簡単ですね👀

試しにちゃんと処理が動くか確認してみましょう!

テスト実行

ユーザー取得

GetUser DB
スクリーンショット 0004-12-26 17.11.54.png スクリーンショット_0004-12-26_17_09_27.png

ユーザー追加

CreateUser DB
スクリーンショット 0004-12-26 17.12.36.png スクリーンショット_0004-12-26_17_12_45.png

ユーザー更新

UpdateUser DB
スクリーンショット 0004-12-26 17.13.58.png スクリーンショット_0004-12-26_17_14_03.png

ユーザー削除

DeleteUser DB
スクリーンショット 0004-12-26 17.14.56.png スクリーンショット 0004-12-26 17.15.02.png

全ての処理が追加の設定不要で、正常に動かすことができました!
最後にアプリとの接続もうまく行くかどうか見ていきましょう👌

フロントアプリでの確認

それぞれの処理が動作しているかわかるよう、簡単な画面を作成しました。
スクリーンショット 0004-12-26 17.33.38.png

Controllerには、GetやUpdateのボタンを押下した際に、
それぞれのオペレーションが実行されるよう関数を定義しています。

Form1.controller.js
define({ 

 //Type your controller code here 
  GetUser : function(){
    UtilIntegration.invokeOperation(
      "DBService", "GetUser",
      {},{},
      function(result){
        alert(JSON.stringify(result.m_user));
      },
      function(error){
        alert("情報取得に失敗しました。");
      });   
  },
  
  UpdateUser : function(){
    let self = this;
    let Id = self.view.txtUpdateId.text;
    let name = self.view.txtUpdateName.text;
    const param = {
      "id" : Id,
      "name" : name
    };
    UtilIntegration.invokeOperation(
      "DBService", "UpdateUser",
      {},param,
      function(){
        alert("更新しました。");
      },
      function(error){
        alert("更新に失敗しました。");
      });   
  },
  
  CreateUser : function(){
    let self = this;
    let name = self.view.txtAddUser.text;
    const param = {"name" : name};
    UtilIntegration.invokeOperation(
      "DBService", "CreateUser",
      {},param,
      function(){
        alert("登録しました。");
      },
      function(error){
        alert("登録に失敗しました。");
      });   
  },

  DeleteUser : function(){
    let self = this;
    let id = self.view.txtDeleteUser.text;
    const param = {"id" : id};
    UtilIntegration.invokeOperation(
      "DBService", "DeleteUser",
      {},param,
      function(){
        alert("削除しました。");
      },
      function(error){
        alert("削除に失敗しました。");
      });       
  }
 });

※Integration Serviceの呼び出しの際、UtilIntegrationという独自のモジュールを呼び出していますが、
中身は、以下の公式ドキュメントと同様の内容となっています。
Integration Serviceを呼び出す場合は、公式ドキュメントをご参照ください。

関数を定義後にそれぞれのボタンにアクション設定することも忘れないようにしましょう。
スクリーンショット_0004-12-26_17_48_30.png
スクリーンショット 0004-12-28 14.26.57.png

それでは、ビルドして確認してみましょう!
(アプリとの接続やビルドの方法がわからない方は下記をご参照ください。)

ezgif-3-d9354c5404.gif
Getボタンでレコード全てを取得、Updateでユーザーの名前を更新、
Createでユーザーの追加、Deleteでユーザー削除ができていることがわかりますね!

最後に

今回は、Relational Detabaseを使ってデータ取得などをする方法をご紹介しました。
簡単なデータベースの構造であれば、
すぐにAPIが完成するので便利な機能だと思います!
是非、活用してみてくださいね!

参考

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?