tf_bindgen_schema/
document.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5pub type Provider = serde_json::Map<String, serde_json::Value>;
6
7#[derive(Deserialize, Serialize)]
8pub struct Document {
9    #[serde(rename = "//")]
10    pub meta: Meta,
11    pub terraform: Terraform,
12    pub provider: HashMap<String, Vec<Provider>>,
13    pub resource: HashMap<String, HashMap<String, Resource>>,
14    pub data: HashMap<String, HashMap<String, Resource>>,
15}
16
17#[derive(Deserialize, Serialize)]
18pub struct Terraform {
19    pub required_providers: HashMap<String, ProviderConfig>,
20}
21
22#[derive(Deserialize, Serialize)]
23pub struct ProviderConfig {
24    pub source: String,
25    pub version: String,
26}
27
28#[derive(Deserialize, Serialize)]
29pub struct Meta {
30    pub metadata: Metadata,
31    pub outputs: HashMap<String, Output>,
32}
33
34#[derive(Deserialize, Serialize)]
35pub struct Metadata {
36    pub backend: String,
37    #[serde(rename = "stackName")]
38    pub stack_name: String,
39    pub version: String,
40}
41
42#[derive(Deserialize, Serialize)]
43pub struct Output {}
44
45#[derive(Deserialize, Serialize)]
46pub struct Resource {
47    #[serde(rename = "//")]
48    pub meta: ResourceMeta,
49    #[serde(flatten)]
50    pub config: HashMap<String, serde_json::Value>,
51}
52
53#[derive(Deserialize, Serialize)]
54pub struct ResourceMeta {
55    pub metadata: ResourceMetadata,
56}
57
58#[derive(Deserialize, Serialize)]
59pub struct ResourceMetadata {
60    pub path: String,
61    #[serde(rename = "uniqueId")]
62    pub unique_id: String,
63}