2023-11-08 21:53:07 +08:00

99 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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