v1.0.0
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
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, // 彩色打印
|
||||
// },
|
||||
// )
|
||||
|
||||
// }
|
||||
Reference in New Issue
Block a user