Skip to content

Commit a2f5e02

Browse files
committed
docs: README.mdを追加した
1 parent 4a106f5 commit a2f5e02

File tree

1 file changed

+101
-1
lines changed

1 file changed

+101
-1
lines changed

README.md

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

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

0 commit comments

Comments
 (0)