Skip to content

Commit c232a92

Browse files
authored
Merge pull request #9 from gcp-kit/docs/add_readme
docs: README.mdを追加した
2 parents 3220108 + 2493d09 commit c232a92

File tree

1 file changed

+107
-1
lines changed

1 file changed

+107
-1
lines changed

README.md

Lines changed: 107 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,109 @@
11
# fti
22

3-
Firestore testdata inserter.
3+
## 使い方
4+
5+
1. ビルド `go build ./cmd/fti/*.go`
6+
2. config.yml を作成
7+
3. 実行 `./main -c "config.yml""`
8+
9+
## config.yml
10+
11+
### targets
12+
13+
コレクション名のディレクトリのリスト
14+
15+
### firestore_project_on_emulator
16+
17+
18+
19+
### firestore_emulator_host
20+
21+
firestore emulator のホスト
22+
23+
ex) `localhost:20048`
24+
25+
空の場合は、
26+
gcloud auth application-default login
27+
とかしてローカルに認証情報が入っていて、かつ
28+
gcloud config set ProjectID
29+
してる時に該当のプロジェクトに対して接続される感じ
30+
31+
## テストデータの作り方
32+
33+
1. FirestoreのCollection名と同じディレクトリを作成する
34+
1. 大文字小文字の区別があるので注意
35+
2. `config.yaml``targets` へディレクトリパスを追加する
36+
1. この際、順序に気をつけること(ツールは記述されてる順序のとおりに実行する)
37+
3. 1で作成したディレクトリ内に `.js` または `.json` のファイルを作る
38+
1. ディレクトリ内にはファイルをいくつおいても問題はない。ただし、その際の実行順序は保証されない。
39+
40+
## テストデータ
41+
42+
### 概念
43+
44+
#### version
45+
ファイル形式のバージョン。ツールの互換性のために存在するため、任意のバージョンをつけてはダメ。
46+
現状は 1.0 のみ。(2021/11/10)
47+
48+
#### ref
49+
参照されるときのID。対象のすべてのデータを通してユニークである必要がある。
50+
データ投入時に自動採番されたIDがこのrefで参照できる。
51+
refを参照する場合は `$ref_id` のように参照する。
52+
53+
### 形式
54+
55+
#### json
56+
57+
```json
58+
{
59+
"version": "1.0",
60+
"items": [
61+
{
62+
"ref": "参照されるときのID(重複禁止)",
63+
"payload": {
64+
"name": "hoge"
65+
},
66+
"SubCollections": {
67+
"Collection1": [
68+
{
69+
"key": "value1"
70+
},
71+
{
72+
"key": "value2"
73+
}]
74+
}
75+
}
76+
]
77+
}
78+
```
79+
80+
#### js
81+
82+
最終的に、下記の形式(サンプル)の配列で認識されるものであれば何をしても良い。
83+
内部的にはv8エンジンを搭載しているため、かなり自由なjsが使えると思うが、どこまでの構文に対応しているかは不明。
84+
85+
```js
86+
[
87+
{
88+
ref: `参照されるときのID(重複禁止)`,
89+
payload: {
90+
parent_id: '$parent_id__1',
91+
created_at: new Date(),
92+
deleted_at: null,
93+
// 実際に投入されるデータ
94+
}
95+
}
96+
]
97+
```
98+
99+
## Q & A
100+
101+
### 日時を入れたい?
102+
103+
#### json
104+
105+
RFC3339(ISO8601)の形式で文字列として入れる
106+
107+
#### js
108+
109+
jsのDateObjectを入れる。

0 commit comments

Comments
 (0)