portal/config/sia.go

57 lines
1.5 KiB
Go
Raw Normal View History

package config
import "errors"
var _ Validator = (*SiaConfig)(nil)
2024-03-10 16:41:42 +00:00
var _ Defaults = (*SiaConfig)(nil)
type SiaConfig struct {
Key string `mapstructure:"key"`
URL string `mapstructure:"url"`
PriceHistoryDays uint64 `mapstructure:"price_history_days"`
MaxUploadPrice float64 `mapstructure:"max_upload_price"`
MaxDownloadPrice float64 `mapstructure:"max_download_price"`
MaxStoragePrice float64 `mapstructure:"max_storage_price"`
MaxContractSCPrice float64 `mapstructure:"max_contract_sc_price"`
MaxRPCSCPrice float64 `mapstructure:"max_rpc_sc_price"`
2024-03-10 16:41:42 +00:00
}
func (s SiaConfig) Defaults() map[string]interface{} {
return map[string]interface{}{
"max_rpc_sc_price": 0.1,
"max_contract_sc_price": 1,
"price_history_days": 90,
2024-03-10 16:41:42 +00:00
}
}
func (s SiaConfig) Validate() error {
if s.Key == "" {
return errors.New("core.storage.sia.key is required")
}
if s.URL == "" {
return errors.New("core.storage.sia.url is required")
}
2024-03-10 16:41:42 +00:00
if s.MaxUploadPrice <= 0 {
return errors.New("core.storage.sia.max_upload_price must be greater than 0")
}
if s.MaxDownloadPrice <= 0 {
return errors.New("core.storage.sia.max_download_price must be greater than 0")
}
if s.MaxStoragePrice <= 0 {
return errors.New("core.storage.sia.max_storage_price must be greater than 0")
}
if s.MaxRPCSCPrice <= 0 {
return errors.New("core.storage.sia.max_rpc_sc_price must be greater than 0")
2024-03-10 16:41:42 +00:00
}
if s.MaxRPCSCPrice <= 0 {
return errors.New("core.storage.sia.max_contract_sc_price must be greater than 0")
2024-03-10 16:41:42 +00:00
}
return nil
}