/
local.go
73 lines (62 loc) · 1.7 KB
/
local.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*---------------------------------------------------------------------------------------------
* Copyright (c) IBAX All rights reserved.
* See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
package storage
import (
"fmt"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
var lpgdb *gorm.DB
type LDatabaseModel struct {
Enable bool `yaml:"enable"`
DBType string `yaml:"type"`
Connect string `yaml:"connect"`
Name string `yaml:"name"`
Ver string `yaml:"ver"`
MaxIdle int `yaml:"max_idle"`
MaxOpen int `yaml:"max_open"`
}
func (d *LDatabaseModel) GormInit() (err error) {
dsn := fmt.Sprintf("%s TimeZone=UTC", d.Connect)
lpgdb, err = gorm.Open(postgres.New(postgres.Config{
DSN: dsn,
}), &gorm.Config{
AllowGlobalUpdate: true, //allow global update
Logger: logger.Default.LogMode(logger.Silent), // start Logger,show detail log
})
if err != nil {
return err
}
sqlDB, err := lpgdb.DB()
if err != nil {
return err
}
sqlDB.SetConnMaxLifetime(time.Minute * 10)
sqlDB.SetMaxIdleConns(5)
sqlDB.SetMaxOpenConns(20)
lpgdb.Migrator().DropTable(&TransactionStatus{})
lpgdb.Migrator().DropTable(&BlockTxDetailedInfoHex{})
lpgdb.Migrator().AutoMigrate(&TransactionStatus{})
lpgdb.Migrator().AutoMigrate(&BlockTxDetailedInfoHex{})
return nil
}
func (d *LDatabaseModel) Conn() *gorm.DB {
return lpgdb
}
func (d *LDatabaseModel) Close() error {
if lpgdb != nil {
sqlDB, err := lpgdb.DB()
if err != nil {
return err
}
if err = sqlDB.Close(); err != nil {
return err
}
lpgdb = nil
}
return nil
}