Files
daohangye/service/models/base.go
T
2023-11-08 21:53:07 +08:00

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