blob: 22c516aab0ce267eb0b12404fad2007810b6f791 [file] [log] [blame]
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package jsonprovider
import (
"github.com/hashicorp/terraform/internal/providers"
)
type Schema struct {
Version uint64 `json:"version"`
Block *Block `json:"block,omitempty"`
}
// marshalSchema is a convenience wrapper around mashalBlock. Schema version
// should be set by the caller.
func marshalSchema(schema providers.Schema) *Schema {
if schema.Body == nil {
return &Schema{}
}
var ret Schema
ret.Block = marshalBlock(schema.Body)
ret.Version = uint64(schema.Version)
return &ret
}
func marshalSchemas(schemas map[string]providers.Schema) map[string]*Schema {
if schemas == nil {
return map[string]*Schema{}
}
ret := make(map[string]*Schema, len(schemas))
for k, v := range schemas {
ret[k] = marshalSchema(v)
}
return ret
}
type IdentitySchema struct {
Version uint64 `json:"version"`
Attributes map[string]*IdentityAttribute `json:"attributes,omitempty"`
}
func marshalIdentitySchema(schema providers.Schema) *IdentitySchema {
var ret IdentitySchema
ret.Version = uint64(schema.IdentityVersion)
ret.Attributes = make(map[string]*IdentityAttribute, len(schema.Identity.Attributes))
for k, v := range schema.Identity.Attributes {
ret.Attributes[k] = marshalIdentityAttribute(v)
}
return &ret
}
func marshalIdentitySchemas(schemas map[string]providers.Schema) map[string]*IdentitySchema {
if schemas == nil {
return map[string]*IdentitySchema{}
}
ret := make(map[string]*IdentitySchema, len(schemas))
for k, v := range schemas {
if v.Identity != nil {
ret[k] = marshalIdentitySchema(v)
}
}
return ret
}