/
firestore_document.go
74 lines (66 loc) · 2.19 KB
/
firestore_document.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// ----------------------------------------------------------------------------
//
// *** AUTO GENERATED CODE *** Type: MMv1 ***
//
// ----------------------------------------------------------------------------
//
// This file is automatically generated by Magic Modules and manual
// changes will be clobbered when the file is regenerated.
//
// Please read more about how to change this file in
// .github/CONTRIBUTING.md.
//
// ----------------------------------------------------------------------------
package google
import (
"encoding/json"
"reflect"
)
const FirestoreDocumentAssetType string = "firestore.googleapis.com/Document"
func resourceConverterFirestoreDocument() ResourceConverter {
return ResourceConverter{
AssetType: FirestoreDocumentAssetType,
Convert: GetFirestoreDocumentCaiObject,
}
}
func GetFirestoreDocumentCaiObject(d TerraformResourceData, config *Config) ([]Asset, error) {
name, err := assetName(d, config, "//firestore.googleapis.com/{{name}}")
if err != nil {
return []Asset{}, err
}
if obj, err := GetFirestoreDocumentApiObject(d, config); err == nil {
return []Asset{{
Name: name,
Type: FirestoreDocumentAssetType,
Resource: &AssetResource{
Version: "v1",
DiscoveryDocumentURI: "https://www.googleapis.com/discovery/v1/apis/firestore/v1/rest",
DiscoveryName: "Document",
Data: obj,
},
}}, nil
} else {
return []Asset{}, err
}
}
func GetFirestoreDocumentApiObject(d TerraformResourceData, config *Config) (map[string]interface{}, error) {
obj := make(map[string]interface{})
fieldsProp, err := expandFirestoreDocumentFields(d.Get("fields"), d, config)
if err != nil {
return nil, err
} else if v, ok := d.GetOkExists("fields"); !isEmptyValue(reflect.ValueOf(fieldsProp)) && (ok || !reflect.DeepEqual(v, fieldsProp)) {
obj["fields"] = fieldsProp
}
return obj, nil
}
func expandFirestoreDocumentFields(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
b := []byte(v.(string))
if len(b) == 0 {
return nil, nil
}
m := make(map[string]interface{})
if err := json.Unmarshal(b, &m); err != nil {
return nil, err
}
return m, nil
}