tf_bindgen_schema/
document.rs1use 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}