- ビルド
go build ./cmd/fti/*.go
- config.yml を作成
- 実行
./main -c "config.yml""
コレクション名のディレクトリのリスト
firestore emulator のホスト
ex) localhost:20048
空の場合は、 gcloud auth application-default login とかしてローカルに認証情報が入っていて、かつ gcloud config set ProjectID してる時に該当のプロジェクトに対して接続される感じ
投入したデータのステータスを保存するディレクトリ。
空を指定した場合は、ステータスを保存しない。
作成されるファイル
state_dir/
└── ref_ids.yaml # ref_idのリスト
- FirestoreのCollection名と同じディレクトリを作成する
- 大文字小文字の区別があるので注意
config.yaml
のtargets
へディレクトリパスを追加する- この際、順序に気をつけること(ツールは記述されてる順序のとおりに実行する)
- 1で作成したディレクトリ内に
.js
または.json
のファイルを作る- ディレクトリ内にはファイルをいくつおいても問題はない。ただし、その際の実行順序は保証されない。
ファイル形式のバージョン。ツールの互換性のために存在するため、任意のバージョンをつけてはダメ。
現状は 1.0 のみ。(2021/11/10)
参照されるときのID。対象のすべてのデータを通してユニークである必要がある。
データ投入時に自動採番されたIDがこのrefで参照できる。
refを参照する場合は #{ref_id}
のように参照する。
{
"version": "1.0",
"items": [
{
"ref": "参照されるときのID(重複禁止)",
"payload": {
"name": "hoge"
},
"sub_collections": {
"SampleCollection1": [
{
"ref": "参照されるときのID(重複禁止)",
"payload": {
"parentID": "#{parentID-1}",
"key": "value1"
}
},
{
"ref": "参照されるときのID(重複禁止)",
"payload": {
"key": "value1"
}
}
]
}
}
]
}
jsonと同じ形式のyamlを投入する
最終的に、下記の形式(サンプル)の配列で認識されるものであれば何をしても良い。
[
{
ref: `参照されるときのID(重複禁止)`,
payload: {
parent_id: '#{parent_id__1}',
created_at: new Date(),
deleted_at: null,
// 実際に投入されるデータ
},
sub_collections: {
SampleCollections1: [
{
ref: '参照されるときのID(重複禁止)',
payload: {
parentID: '#{parentID-1}',
key: 'value1'
}
}
]
}
}
]
RFC3339(ISO8601)の形式で文字列として入れる
jsのDateObjectを入れる。