42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
type Config struct {
|
||
Host string `toml:"host"` //数据库名称
|
||
Port int `toml:"port"` //数据库名称
|
||
Debug bool `toml:"debug"` //调试开关(会在日志打印SQL)
|
||
Dbname string `toml:"dbname"` //数据库名称
|
||
Username string `toml:"username"` //数据库用户名
|
||
Password string `toml:"password"` //数据库连接密码
|
||
ExtraParameters string `toml:"extra_parameters"` //数据库连接扩展参数
|
||
}
|
||
|
||
type Model struct {
|
||
DB *gorm.DB
|
||
DbTxStatus DbTxStatus
|
||
Redis redis.Conn
|
||
RedisPool *redis.Pool
|
||
}
|
||
|
||
func NewModel() *Model {
|
||
return NewModelDefault()
|
||
}
|
||
|
||
type DbTxStatus int
|
||
|
||
const (
|
||
DBTX_STATUS_TX_NONE DbTxStatus = 0
|
||
DBTX_STATUS_TX_DOING DbTxStatus = 1
|
||
DBTX_STATUS_TX_SUCCESS DbTxStatus = 2
|
||
DBTX_STATUS_TX_FAILED DbTxStatus = 3
|
||
)
|
||
|
||
func (m *Model) Close() {
|
||
if m.Redis != nil {
|
||
m.Redis.Close()
|
||
}
|
||
if m.DB == nil {
|
||
m.DbTxStatus = DBTX_STATUS_TX_NONE
|
||
} else if m.DbTxStatus == DBTX_STATUS_TX_DOING {
|
||
m.DB.Rollback()
|
||
m.DbTxStatus = DBTX_STATUS_TX_FAILED
|
||
}
|
||
}
|