From 8e6448d7a7a75a34876ce8921bd7bcdd162ef40b Mon Sep 17 00:00:00 2001
From: withchao <993506633@qq.com>
Date: Mon, 10 Feb 2025 10:57:03 +0800
Subject: [PATCH] seq read config

---
 tools/seq/internal/seq.go | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/tools/seq/internal/seq.go b/tools/seq/internal/seq.go
index c931cda5d..3ec67e2db 100644
--- a/tools/seq/internal/seq.go
+++ b/tools/seq/internal/seq.go
@@ -15,16 +15,17 @@ import (
 	"syscall"
 	"time"
 
+	"github.com/mitchellh/mapstructure"
 	"github.com/openimsdk/open-im-server/v3/pkg/common/config"
 	"github.com/openimsdk/open-im-server/v3/pkg/common/storage/database/mgo"
 	"github.com/openimsdk/tools/db/mongoutil"
 	"github.com/openimsdk/tools/db/redisutil"
 	"github.com/openimsdk/tools/utils/runtimeenv"
 	"github.com/redis/go-redis/v9"
+	"github.com/spf13/viper"
 	"go.mongodb.org/mongo-driver/bson"
 	"go.mongodb.org/mongo-driver/mongo"
 	"go.mongodb.org/mongo-driver/mongo/options"
-	"gopkg.in/yaml.v3"
 )
 
 const (
@@ -45,13 +46,16 @@ func readConfig[T any](dir string, name string) (*T, error) {
 	if runtimeenv.PrintRuntimeEnvironment() == config.KUBERNETES {
 		dir = os.Getenv(config.MountConfigFilePath)
 	}
-
-	data, err := os.ReadFile(filepath.Join(dir, name))
-	if err != nil {
+	v := viper.New()
+	v.SetConfigFile(filepath.Join(dir, name))
+	if err := v.ReadInConfig(); err != nil {
 		return nil, err
 	}
+	fn := func(config *mapstructure.DecoderConfig) {
+		config.TagName = "mapstructure"
+	}
 	var conf T
-	if err := yaml.Unmarshal(data, &conf); err != nil {
+	if err := v.Unmarshal(&conf, fn); err != nil {
 		return nil, err
 	}
 	return &conf, nil