File tree Expand file tree Collapse file tree 1 file changed +101
-1
lines changed Expand file tree Collapse file tree 1 file changed +101
-1
lines changed Original file line number Diff line number Diff line change 1
1
# fti
2
2
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を入れる。
You can’t perform that action at this time.
0 commit comments