firestore-migration

1.0.9 • Public • Published

npm version CircleCI

🎉firestore-migration🎉

firestore-migrationとは

これはfirestoreのdatabaseをmigrationするためのcomman lineツールです。

注意事項

現状、実装段階です。
ご利用する際はツールの挙動等を理解した上でご利用いただけますと幸いです。

仕組み[バージョンの管理について]

このツールを利用すると、初回に「migrations」というcollectionがrootに作成されます。
このcollectionでmigrationのバージョン管理を行っております。
collection内のdocumentIDとmigrationファイル「version_file名.json」のversionを比較し、versionが存在しなかった場合、対象のmigrationファイルを実行するというロジックで制作しています。

設定方法

環境変数

環境変数として以下を設定してください。

$FS_KEY: gcpのサービスアカウントkey(json)をBase64でdecodeした文字列

FS_KEYの作り方

ここを参考に、IAM>サービスアカウントからkeyを発行します。jsonのkeyファイルをダウンロードしたら、以下コマンドでBase64デコードを行います。

cat [jsonkeyファイルパス] | base64 -w 0

出力された文字列をFS_KEY環境変数に設定すればOKです。

インストール

npm or yarnで以下コマンドでinstallしてください。

npm install -g firestore-migration
or
yarn global add firestore-migration

使い方

fsmigrate -c [ファイル名]

このコマンドでmigrationを行うためのファイルを生成します。

fsmigrate -m [スクリプト格納フォルダパス]

migration -cで生成したファイルからmigrationを実施します。

ファイルの記述方法

Field Add

対象コレクションへのフィールドの追加を行う場合、以下のように記述します。

{
   "method": "ADD",
   "collection": "tests", // collection nameを記載
   "params": [
      {"name": "propA", "value": "propB"}, // name: フィールド名、value:設定する値
      {"name": "propC", "value": "propD"}
   ]
}

Field Delete

対象コレクションのフィールド削除を行う場合、以下のように記述します。

{
   "method": "DEL",
   "collection": "tests",
   "params": [
      {"name": "propA"},
      {"name": "propB"}
   ]
}

Field Modify

コレクション内の対象フィールドの内容を変更する場合、以下のように記述します。

{
   "method": "MOD",
   "collection": "tests",
   "params": [
      {"name": "propA", "if":"{propA} === 2 && {propC} === 'val2'","value": 1} // *1
   ]
}
[補足]
*1 if内では'{field名}'で現在格納されているfield内容を取得し、条件式を記述できます。trueの場合、value値を適用します。

Change Field Name

Field名の変更を実施する場合、以下のように記述します。

{
   "method": "CHANGE_FIELD_NAME",
   "collection": "user",
   "params": [
      {"name": "name", "to": "nickname"},
      {"name": "age", "to": "tosi"}
   ]
}

Readme

Keywords

Package Sidebar

Install

npm i firestore-migration

Weekly Downloads

4

Version

1.0.9

License

MIT

Unpacked Size

224 kB

Total Files

16

Last publish

Collaborators

  • gaku3601