2019-12-23

Salesforceのオブジェクト定義から文字列を出力できるジェネレータを作った

Salesforceのオブジェクト定義を使って文字列を出力できるジェネレータを作ってみましたー

モチベーションとしては、VF + JSRemoting + Frontのフレームワークな構成を試していたんだけど SObjectの定義を使ってJSやApexのファイルを作成する必要があったので若干面倒だったというやーつ

使い方

インストール

$ npm install -g sf-metadata-converter

ID/PWDは環境変数で指定して叩くと、テンプレートにSObjectの定義をパラメータとしてバインドした文字列が標準出力に出力されます

$ export SALESFORCE_USERNAME=xxx
$ export SALESFORCE_PASSWORD=xxx
$ sfmconv -T {SObject Name} -t {template file}

template fileはEJSでこんな感じで書きます

class <%= name %> {
  constructor() {
    this.params = [<%- fields.map(f => `'${f.name}'`).join(','); %>];
  }
}

ビルトインのテンプレートも持っていて、js typescript apex を指定するとそれっぽいのが表示されます

テンプレートにはURLの指定もOK

$ sfmconv -T Account -t "https://httpbin.org/get?q=%3C%=%20name%20%%3E"

バインドしているパラメータはjsforceでmetadata describeしたときのレスポンスが入ります

Apexのテストデータ作成とかSObjectのTypeScriptの型定義やJSのクラス生成とかに役立つのではないかと思いまっす

このエントリーをはてなブックマークに追加