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, // 彩色打印
|
|
// },
|
|
// )
|
|
|
|
// }
|