package config

type Aws struct {
	AccessKey string `mapstructure:"AWS_ACCESS_KEY"`
	SecretKey string `mapstructure:"AWS_SECRET_KEY"`
	Region    string `mapstructure:"AWS_REGION"`
	S3Domain  string `mapstructure:"AWS_S3_DOMAIN"`

	ShippingLabelPresignedTTL int    `mapstructure:"AWS_S3_SHIPPING_LABEL_PRESIGNED_URL_TTL_IN_MINUTE"`
	ShippingLabelBucket       string `mapstructure:"AWS_S3_SHIPPING_LABEL_BUCKET"`
	ShippingLabelFolder       string `mapstructure:"AWS_S3_SHIPPING_LABEL_FOLDER"`

	CloudWatchLog CloudWatchLog `mapstructure:",squash"`
}

type CloudWatchLog struct {
	GroupName        string `mapstructure:"AWS_CLOUDWATCH_LOG_GROUP_NAME"`
	StreamName       string `mapstructure:"AWS_CLOUDWATCH_LOG_STREAM_NAME"`
	StreamNamePrefix string `mapstructure:"AWS_CLOUDWATCH_LOG_STREAM_NAME_PREFIX"`
	BatchFrequency   int    `mapstructure:"AWS_CLOUDWATCH_LOG_BATCH_FREQUENCY"`
}

func (c *configImpl) GetAwsConfig() Aws {
	return c.systemConfig.Aws
}

func (c *configImpl) setDefaultAwsConfig() {
	c.viper.SetDefault("AWS_ACCESS_KEY", "")
	c.viper.SetDefault("AWS_SECRET_KEY", "")
	c.viper.SetDefault("AWS_REGION", "")
	c.viper.SetDefault("AWS_BUCKET", "")
	c.viper.SetDefault("AWS_UPLOAD_FOLDER", "")
	c.viper.SetDefault("AWS_S3_DOMAIN", "")
	c.viper.SetDefault("AWS_S3_SHIPPING_LABEL_BUCKET", "shipping_label")
	c.viper.SetDefault("AWS_S3_SHIPPING_LABEL_PRESIGNED_URL_TTL_IN_MINUTE", 10)
	c.viper.SetDefault("AWS_CLOUDWATCH_LOG_BATCH_FREQUENCY", 10)
}
