package schema

// LocalStorageConfiguration represents the configuration when using local storage.
type LocalStorageConfiguration struct {
	Path string `yaml:"path"`
}

// SQLStorageConfiguration represents the configuration of the SQL database
type SQLStorageConfiguration struct {
	Host     string `yaml:"host"`
	Port     int    `yaml:"port"`
	Database string `yaml:"database"`
	Username string `yaml:"username"`
	Password string `yaml:"password"`
}

// MySQLStorageConfiguration represents the configuration of a MySQL database
type MySQLStorageConfiguration struct {
	SQLStorageConfiguration `yaml:",inline"`
}

// PostgreSQLStorageConfiguration represents the configuration of a Postgres database
type PostgreSQLStorageConfiguration struct {
	SQLStorageConfiguration `yaml:",inline"`
	SSLMode                 string `yaml:"sslmode"`
}

// StorageConfiguration represents the configuration of the storage backend.
type StorageConfiguration struct {
	Local      *LocalStorageConfiguration      `yaml:"local"`
	MySQL      *MySQLStorageConfiguration      `yaml:"mysql"`
	PostgreSQL *PostgreSQLStorageConfiguration `yaml:"postgres"`
}