From d162dfab7c36116642215c24b7ab3f7ad881b4ca Mon Sep 17 00:00:00 2001 From: PandaX <18610165312@163.com> Date: Fri, 3 Nov 2023 10:06:06 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=88=9B=E5=BB=BAtdengine=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 2 +- pkg/tdengine/tdengine.go | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index cf11646..41beade 100644 --- a/main.go +++ b/main.go @@ -46,7 +46,7 @@ var rootCmd = &cobra.Command{ global.Log.Info("Redis连接成功") } cache.RedisDb = client - tDengine, err := tdengine.NewTdengine(global.Conf.Taos.Username, global.Conf.Taos.Password, global.Conf.Taos.Host, global.Conf.Taos.Database) + tDengine, err := tdengine.InitTd(global.Conf.Taos.Username, global.Conf.Taos.Password, global.Conf.Taos.Host, global.Conf.Taos.Database) if err != nil { global.Log.Panic("Tdengine连接错误") } else { diff --git a/pkg/tdengine/tdengine.go b/pkg/tdengine/tdengine.go index 1bf6fc1..09552b4 100644 --- a/pkg/tdengine/tdengine.go +++ b/pkg/tdengine/tdengine.go @@ -2,7 +2,9 @@ package tdengine import ( "database/sql" + "encoding/base64" "fmt" + "github.com/PandaXGO/PandaKit/httpclient" _ "github.com/taosdata/driver-go/v3/taosRestful" "strings" "time" @@ -13,6 +15,14 @@ type TdEngine struct { dbName string } +func InitTd(username, password, host, db string) (*TdEngine, error) { + _, err := CreateDataBase(username, password, host, db) + if err != nil { + return nil, err + } + return NewTdengine(username, password, host, db) +} + func NewTdengine(username, password, host, db string) (*TdEngine, error) { dsn := fmt.Sprintf("%s:%s@%s(%s)/%s", username, password, "http", host, db) @@ -24,6 +34,18 @@ func NewTdengine(username, password, host, db string) (*TdEngine, error) { } +// 创建数据库 +func CreateDataBase(username, password, host, dbname string) (float64, error) { + sql := "CREATE DATABASE if not exists " + dbname + " KEEP 365 VGROUPS 10" + url := fmt.Sprintf("http://%s/rest/sql", host) + token := base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", username, password))) + data, err := httpclient.NewRequest(url).Header("Authorization", "Basic "+token).PostText(sql).BodyToMap() + if err != nil { + return 0, err + } + return data["rows"].(float64), nil +} + // GetTdEngineAllDb 获取所有数据库 func (s *TdEngine) GetTdEngineAllDb() (data []string, err error) { rows, err := s.db.Query("show databases;")