migrate from github

This commit is contained in:
2026-07-15 22:42:31 +08:00
commit 3ad559f05e
262 changed files with 21637 additions and 0 deletions
+151
View File
@@ -0,0 +1,151 @@
package config
import (
"strings"
"github.com/XingfenD/yoresee_doc/internal/status"
"github.com/sirupsen/logrus"
"github.com/spf13/viper"
)
type Config struct {
Server ServerConfig `mapstructure:"server"`
Database DatabaseConfig `mapstructure:"database"`
Redis RedisConfig `mapstructure:"redis"`
Minio MinioConfig `mapstructure:"minio"`
Elasticsearch ElasticsearchConfig `mapstructure:"elasticsearch"`
MQConfig MQConfig `mapstructure:"mq_config"`
Consul ConsulConfig `mapstructure:"consul"`
Backend BackendConfig `mapstructure:"backend"`
}
type ServerConfig struct {
GrpcPort int `mapstructure:"grpc_port"`
GrpcWebPort int `mapstructure:"grpc_web_port"`
}
type DatabaseConfig struct {
Host string `mapstructure:"host"`
Port int `mapstructure:"port"`
User string `mapstructure:"user"`
Password string `mapstructure:"password"`
Name string `mapstructure:"name"`
MaxIdleConns int `mapstructure:"max_idle_conns"`
MaxOpenConns int `mapstructure:"max_open_conns"`
}
type RedisConfig struct {
Host string `mapstructure:"host"`
Port int `mapstructure:"port"`
Password string `mapstructure:"password"`
DB int `mapstructure:"db"`
}
type ConsulConfig struct {
Enabled bool `mapstructure:"enabled"`
Address string `mapstructure:"address"`
Scheme string `mapstructure:"scheme"`
Token string `mapstructure:"token"`
Datacenter string `mapstructure:"datacenter"`
Prefix string `mapstructure:"prefix"`
}
type MinioConfig struct {
Endpoint string `mapstructure:"endpoint"`
AccessKey string `mapstructure:"access_key"`
SecretKey string `mapstructure:"secret_key"`
Bucket string `mapstructure:"bucket"`
UseSSL bool `mapstructure:"use_ssl"`
}
type ElasticsearchConfig struct {
Enabled bool `mapstructure:"enabled"`
Addresses []string `mapstructure:"addresses"`
Username string `mapstructure:"username"`
Password string `mapstructure:"password"`
IndexPrefix string `mapstructure:"index_prefix"`
Timeout int `mapstructure:"timeout"`
}
type ClusterRole string
const (
ClusterRoleProducer ClusterRole = "producer"
ClusterRoleConsumer ClusterRole = "consumer"
ClusterRoleHybrid ClusterRole = "hybrid" // producer and consumer
)
type BackendConfig struct {
Jwt JWTConfig `mapstructure:"jwt"`
Log LogConfig `mapstructure:"log"`
Security SecurityConfig `mapstructure:"security"`
SystemName string `mapstructure:"system_name"`
InternalRPCKey string `mapstructure:"internal_rpc_key"`
}
type LogConfig struct {
Level string `mapstructure:"level"`
GormLogLevel string `mapstructure:"gorm_log_level"`
}
type MQConfig struct {
Redis RedisQueueConfig `mapstructure:"redis"`
RabbitMQ RabbitMQQueueConfig `mapstructure:"rabbitmq"`
}
type RedisQueueConfig struct {
}
type RabbitMQQueueConfig struct {
URL string `mapstructure:"url"`
}
type JWTConfig struct {
Secret string `mapstructure:"secret"`
Expire int64 `mapstructure:"expire"`
}
type SecurityConfig struct {
PasswordHashCost int `mapstructure:"password_hash_cost"`
CORS CORSConfig `mapstructure:"cors"`
}
type CORSConfig struct {
AllowedOrigins []string `mapstructure:"allowed_origins"`
AllowedMethods []string `mapstructure:"allowed_methods"`
AllowedHeaders []string `mapstructure:"allowed_headers"`
AllowCredentials bool `mapstructure:"allow_credentials"`
MaxAge int `mapstructure:"max_age"`
}
var GlobalConfig *Config
func InitConfig() error {
viper.SetConfigName("config")
viper.SetConfigType("toml")
viper.AddConfigPath(".")
viper.AddConfigPath("./config")
if err := viper.ReadInConfig(); err != nil {
return status.GenErrWithCustomMsg(status.StatusServiceInternalError, "read config failed")
}
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
viper.AutomaticEnv()
if err := viper.Unmarshal(&GlobalConfig); err != nil {
return status.GenErrWithCustomMsg(status.StatusServiceInternalError, "unmarshal config failed")
}
levelText := strings.TrimSpace(GlobalConfig.Backend.Log.Level)
if levelText == "" {
levelText = "info"
}
level, err := logrus.ParseLevel(strings.ToLower(levelText))
if err != nil {
return status.GenErrWithCustomMsg(status.StatusServiceInternalError, "invalid backend.log.level")
}
logrus.SetLevel(level)
return nil
}