init: initial commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
type DatabaseConfig struct {
|
||||
DSN string `mapstructure:"dsn"`
|
||||
}
|
||||
|
||||
type DeepSeekConfig struct {
|
||||
APIKey string `mapstructure:"api_key"`
|
||||
Model string `mapstructure:"model"`
|
||||
TimeoutSeconds int `mapstructure:"timeout_seconds"`
|
||||
MaxTokens int `mapstructure:"max_tokens"`
|
||||
}
|
||||
|
||||
type AppConfig struct {
|
||||
Database DatabaseConfig `mapstructure:"database"`
|
||||
DeepSeek DeepSeekConfig `mapstructure:"deepseek"`
|
||||
}
|
||||
|
||||
var Global AppConfig
|
||||
|
||||
func Load() error {
|
||||
viper.SetConfigName("config")
|
||||
viper.SetConfigType("yaml")
|
||||
viper.AddConfigPath(".")
|
||||
viper.AddConfigPath("$HOME/.ai-expert-sidebar")
|
||||
|
||||
// Defaults
|
||||
viper.SetDefault("database.dsn",
|
||||
"root:password@tcp(127.0.0.1:3306)/ai_expert?charset=utf8mb4&parseTime=True&loc=Local")
|
||||
viper.SetDefault("deepseek.api_key", "")
|
||||
viper.SetDefault("deepseek.model", "deepseek-chat")
|
||||
viper.SetDefault("deepseek.timeout_seconds", 60)
|
||||
viper.SetDefault("deepseek.max_tokens", 1024)
|
||||
|
||||
if err := viper.ReadInConfig(); err != nil {
|
||||
if _, ok := err.(viper.ConfigFileNotFoundError); !ok {
|
||||
return fmt.Errorf("config read error: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
return viper.Unmarshal(&Global)
|
||||
}
|
||||
Reference in New Issue
Block a user