11
2

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 3 years have passed since last update.

Azure環境プリザンターでDBから日時を取得してみた

Posted at

はじめに

弊社でも利用させていただいているプリザンターの「Advent Calendar 2020」 が盛り上がっているのを拝見し、Qiita初投稿ながら参加させていただきました。

今回は、Azure環境のプリザンターで拡張SQLを実装したときのことを紹介します。
初めて拡張SQLを使ってみたとき少し躓いたので、これを読んでいる方の参考になれば幸いです。

やりたいこと

Azure SQL Databaseから現在日時を取得し、プリザンター上の項目に出力する。

①拡張SQLを用意

開発者向け機能:拡張機能:拡張SQL

まず、Azure SQL Databaseから日時を取得するための、以下2つのファイル「GetDateDB.json」と「GetDateDB.json.sql」を用意します。

GetDateDB.json
{
    "Name": "GetDateDB",
    "Description": "日時を取得します。",
    "SiteIdList": null,
    "IdList": null,
    "Api": true,
    "OnCreating": false,
    "OnCreated": false,
    "OnUpdating": false,
    "OnUpdated": false,
    "OnDeleting": false,
    "OnDeleted": false,
    "OnBulkDeleting": false,
    "OnBulkDeleted": false,
    "OnImporting": false,
    "OnImported": false,
    "OnSelectingWhere": false,
    "CommandText": ""
}

Azure SQL DatabaseはUTC日時のため、日本時間に合わせるため+9時間してます。

GetDateDB.json.sql
select dateadd(hour, 9, getdate());

②Azure上に拡張SQLファイルをアップロード

「App Service」→「高度なツール」→「移動」で Kudu を開く
高度なツール.png

「Debug console」→「CMD」を開く
CMD.png

以下のファイルパスへ移動
「D:\home\site\wwwroot\App_Data\Parameters\ExtendedSqls>」

①で作成した2つのファイルをアップロード。
GetDateDB.png

これで拡張SQLの設定は整いました。
※一度App Serviceを再起動しないと設定ファイルが反映されないのでお忘れなく

③プリザンター上にスクリプトの登録

開発者向け機能:APIから拡張SQLを実行する

あとはAPI実行で、②の拡張SQLを実行するだけです。

getdbDate.js

var DateData = {
    "ApiVersion": 1.1,
    "ApiKey": ApiKey,       //ApiKeyを設定
    "Name": "GetDateDB"
}

$.ajax({
            type:"post", 
            url:"/api/extended/sql",                    // APIのパス
            data:JSON.stringify(DateData),              // JSONデータ本体
            contentType: 'application/json',            // リクエストの Content-Type
            dataType: "json",                           // レスポンスをJSONとしてパースする
        }).done(function(DateData1) { 
            var DateData2 = JSON.stringify(DateData1);  //JavaScriptオブジェクトをJSONに変換
            var objData = JSON.parse(DateData2);

            if (objData.StatusCode == 200){
                var dbDate = objData.Response.Data.Table[0].Column1; 
                $p.set($('#Results_ClassA'), dbDate);   // 結果を出力
            }
        })

④実行結果

Azure SQL Databaseから取得した日時が、プリザンター上の項目(分類A)へ出力されることを確認!
実行結果.png

おわり

今年はプリザンターに出会い学びの多い年となりました。
他サービスとの連携など色々試して、今後もQiitaに投稿していきたいと思います。

みなさま、良い年末年始をお過ごしください。

11
2
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
11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?