github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/ociinstaller/imageconfig.go (about)

     1  package ociinstaller
     2  
     3  import (
     4  	"encoding/json"
     5  )
     6  
     7  const DefaultConfigSchema string = "2020-11-18"
     8  
     9  type config struct {
    10  	SchemaVersion string        `json:"schemaVersion"`
    11  	Plugin        *configPlugin `json:"plugin,omitempty"`
    12  	Database      *configDb     `json:"db,omitempty"`
    13  	Fdw           *configFdw    `json:"fdw,omitempty"`
    14  }
    15  
    16  type configPlugin struct {
    17  	Name         string `json:"name,omitempty"`
    18  	Organization string `json:"organization,omitempty"`
    19  	Version      string `json:"version"`
    20  }
    21  
    22  type configDb struct {
    23  	Name         string `json:"name,omitempty"`
    24  	Organization string `json:"organization,omitempty"`
    25  	Version      string `json:"version"`
    26  	DBVersion    string `json:"dbVersion,omitempty"`
    27  }
    28  
    29  type configFdw struct {
    30  	Name         string `json:"name,omitempty"`
    31  	Organization string `json:"organization,omitempty"`
    32  	Version      string `json:"version"`
    33  }
    34  
    35  func newSteampipeImageConfig(configBytes []byte) (*config, error) {
    36  	configData := &config{
    37  		Plugin:   &configPlugin{},
    38  		Database: &configDb{},
    39  		Fdw:      &configFdw{},
    40  	}
    41  	if err := json.Unmarshal(configBytes, configData); err != nil {
    42  		return nil, err
    43  	}
    44  
    45  	if configData.SchemaVersion == "" {
    46  		configData.SchemaVersion = DefaultConfigSchema
    47  	}
    48  	return configData, nil
    49  }