99 lines
2.3 KiB
Go
99 lines
2.3 KiB
Go
package models
|
||
|
||
import (
|
||
"fmt"
|
||
"time"
|
||
|
||
_ "gorm.io/driver/mysql"
|
||
"gorm.io/driver/sqlite"
|
||
_ "gorm.io/driver/sqlite"
|
||
"gorm.io/gorm"
|
||
"gorm.io/gorm/schema"
|
||
)
|
||
|
||
// int类型代表是否的常量
|
||
const (
|
||
INT_FALSE = iota
|
||
INT_TURE
|
||
)
|
||
|
||
type BaseModel struct {
|
||
gorm.Model
|
||
// Db *gorm.DB `gorm:"_"`
|
||
ID uint `gorm:"primarykey" json:"id"`
|
||
CreatedAt time.Time `json:"createTime"`
|
||
UpdatedAt time.Time `json:"updateTime"`
|
||
// DeletedAt DeletedAt `gorm:"index"`
|
||
}
|
||
|
||
type BaseModelNoId struct {
|
||
CreatedAt time.Time `json:"createTime"`
|
||
UpdatedAt time.Time `json:"updateTime"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index"`
|
||
}
|
||
|
||
// 分页的结构体
|
||
type PageLimitStruct struct {
|
||
PageSize int `gorm:"-"` //
|
||
LimitSize int `gorm:"-"` //
|
||
}
|
||
|
||
// 计算分页
|
||
func calcPage(page_size, limit_size int) (offset, limit int) {
|
||
offset = limit_size * (page_size - 1)
|
||
limit = limit_size
|
||
return
|
||
}
|
||
|
||
var Db *gorm.DB
|
||
|
||
func GetDb() (*gorm.DB, error) {
|
||
var db *gorm.DB
|
||
var err error
|
||
|
||
dbModels := []interface{}{
|
||
&User{},
|
||
}
|
||
dbDrive := "mysql"
|
||
|
||
if dbDrive == "mysql" {
|
||
|
||
db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(dbModels...)
|
||
sqlDb, _ := db.DB()
|
||
sqlDb.SetMaxIdleConns(10) // SetMaxIdleConns 设置空闲连接池中连接的最大数量
|
||
sqlDb.SetMaxOpenConns(100) // SetMaxOpenConns 设置打开数据库连接的最大数量。
|
||
sqlDb.SetConnMaxLifetime(time.Minute) // SetConnMaxLifetime 设置了连接可复用的最大时间。
|
||
|
||
} else {
|
||
fmt.Println("数据库驱动:", "SQLite")
|
||
db, err = gorm.Open(sqlite.Open("database.db"), &gorm.Config{
|
||
NamingStrategy: schema.NamingStrategy{
|
||
// TablePrefix: "blog_",
|
||
SingularTable: true,
|
||
},
|
||
// Logger: GetLogger(),
|
||
// DisableForeignKeyConstraintWhenMigrating: true,
|
||
})
|
||
|
||
db.AutoMigrate(dbModels...)
|
||
|
||
}
|
||
|
||
Db = db
|
||
return Db, err
|
||
}
|
||
|
||
// // 日志
|
||
// func GetLogger() logger.Interface {
|
||
// return logger.New(
|
||
// log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer(日志输出的目标,前缀和日志包含的内容——译者注)
|
||
// logger.Config{
|
||
// SlowThreshold: time.Second, // 慢 SQL 阈值
|
||
// LogLevel: logger.Warn, // 日志级别
|
||
// IgnoreRecordNotFoundError: true, // 忽略ErrRecordNotFound(记录未找到)错误
|
||
// Colorful: true, // 彩色打印
|
||
// },
|
||
// )
|
||
|
||
// }
|