hpds_jkw_web/model/index.go

99 lines
2.1 KiB
Go
Raw Normal View History

2023-01-06 10:09:23 +08:00
package model
import (
"fmt"
"github.com/go-redis/redis"
_ "github.com/go-sql-driver/mysql"
"go.uber.org/zap"
"hpds-iot-web/config"
"os"
"time"
"xorm.io/xorm"
"xorm.io/xorm/dialects"
)
2023-03-24 08:42:28 +08:00
type Statistics struct {
Total int64
}
2023-01-06 10:09:23 +08:00
var (
DB *xorm.Engine
Redis *redis.Client
)
2023-03-23 18:03:09 +08:00
func New(driveName, dsn string, showSql bool) {
DB, _ = NewDbConnection(driveName, dsn)
DB.ShowSQL(showSql)
2023-01-06 10:09:23 +08:00
DB.Dialect().SetQuotePolicy(dialects.QuotePolicyReserved)
err := DB.Sync2(
&Brand{},
2023-01-13 11:26:39 +08:00
&Dataset{},
&DatasetDetail{},
2023-01-06 10:09:23 +08:00
&DetectionTask{},
&Device{},
&DeviceType{},
&Disease{},
2023-01-12 10:21:40 +08:00
&DiseaseType{},
2023-01-11 18:05:29 +08:00
&FileManager{},
2023-01-06 10:09:23 +08:00
&MatterAttribute{},
&MatterCategory{},
&MatterEvent{},
&MatterEventParams{},
&MatterModel{},
&MatterService{},
&MatterServiceParams{},
&MatterVersion{},
2023-01-06 16:10:18 +08:00
&Model{},
&ModelVersion{},
2023-01-06 10:09:23 +08:00
&Node{},
2023-03-23 18:03:09 +08:00
&NodeState{},
&IssueModel{},
2023-01-06 10:09:23 +08:00
&OriginalData{},
&Owner{},
&Project{},
&SystemMenu{},
&OperationLog{},
&SystemRoleMenu{},
&SystemRoleRoute{},
&SystemRole{},
&SystemUser{},
2023-01-10 10:01:42 +08:00
&SystemUserRole{},
2023-03-23 18:03:09 +08:00
&Task{},
&TaskLog{},
2023-03-23 18:03:09 +08:00
&TaskResult{},
2023-01-06 10:09:23 +08:00
)
if err != nil {
zap.L().Error("同步数据库表结构", zap.Error(err))
os.Exit(1)
}
}
2023-03-23 18:03:09 +08:00
func NewDbConnection(driveName, dsn string) (db *xorm.Engine, err error) {
db, err = xorm.NewEngine(driveName, dsn)
2023-01-06 10:09:23 +08:00
if err != nil {
zap.L().Error("创建数据库连接", zap.Error(err))
os.Exit(-1)
}
db.SetMaxOpenConns(300)
return
}
func NewCache(c config.CacheConfig) {
Redis = redis.NewClient(&redis.Options{
Addr: fmt.Sprintf("%s:%d", c.Host, c.Port),
Password: c.Pass, // no password set
DB: c.DB, // use default DB
PoolSize: c.PoolSize, // Redis连接池大小
MaxRetries: 3, // 最大重试次数
IdleTimeout: 10 * time.Second, // 空闲链接超时时间
})
pong, err := Redis.Ping().Result()
if err == redis.Nil {
zap.L().Error("访问Redis异常", zap.Error(fmt.Errorf("redis.Nil")))
} else if err != nil {
zap.L().Error("访问Redis异常", zap.Error(err))
} else {
zap.L().Info("Redis连接成功", zap.String("pong", pong))
}
}