File tree Expand file tree Collapse file tree 1 file changed +107
-1
lines changed Expand file tree Collapse file tree 1 file changed +107
-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/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を入れる。
You can’t perform that action at this time.
0 commit comments