postgresql
This commit is contained in:
20
gorm/errors.go
Normal file
20
gorm/errors.go
Normal file
@ -0,0 +1,20 @@
|
||||
package gorm
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var ErrRecordNotFound = gorm.ErrRecordNotFound
|
||||
var ZeroRowsAffected = errors.New("zero rows was affected")
|
||||
|
||||
func ErrOrZeroAffected(resp *gorm.DB) error {
|
||||
if resp.Error != nil {
|
||||
return resp.Error
|
||||
}
|
||||
if resp.RowsAffected == 0 {
|
||||
return ZeroRowsAffected
|
||||
}
|
||||
return nil
|
||||
}
|
21
gorm/good.go
Normal file
21
gorm/good.go
Normal file
@ -0,0 +1,21 @@
|
||||
package gorm
|
||||
|
||||
import "time"
|
||||
|
||||
type Good struct {
|
||||
ID string
|
||||
Name string
|
||||
IDC int
|
||||
IDR int
|
||||
Goodlink string
|
||||
Seller string
|
||||
Sellerlink string
|
||||
Sellerrating int
|
||||
Sold int
|
||||
Price float64
|
||||
CreatedAt time.Time
|
||||
}
|
||||
|
||||
func (Good) TableName() string {
|
||||
return "goods"
|
||||
}
|
56
gorm/gorm.go
Normal file
56
gorm/gorm.go
Normal file
@ -0,0 +1,56 @@
|
||||
package gorm
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/gorm"
|
||||
gormlogger "gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
var db *gorm.DB
|
||||
|
||||
var mu = sync.Mutex{}
|
||||
|
||||
func GetDB() *gorm.DB {
|
||||
if db != nil {
|
||||
return db
|
||||
}
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
if db == nil {
|
||||
var err error
|
||||
logLevel := gormlogger.Warn
|
||||
if os.Getenv("DB_DEBUG") == "true" {
|
||||
logLevel = gormlogger.Info
|
||||
}
|
||||
db, err = gorm.Open(postgres.Open(os.Getenv("POSTGRESQL_DSN")), &gorm.Config{
|
||||
Logger: gormlogger.New(
|
||||
log.Default(),
|
||||
gormlogger.Config{
|
||||
SlowThreshold: time.Second, // Slow SQL threshold
|
||||
LogLevel: logLevel, // Log level
|
||||
Colorful: false, // Disable color
|
||||
},
|
||||
),
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
log.Fatalf("failed to get sql db: %s", err.Error())
|
||||
return nil
|
||||
}
|
||||
|
||||
sqlDB.SetConnMaxIdleTime(3 * time.Minute)
|
||||
sqlDB.SetConnMaxLifetime(10 * time.Minute)
|
||||
|
||||
sqlDB.SetMaxIdleConns(1)
|
||||
sqlDB.SetMaxOpenConns(10)
|
||||
}
|
||||
return db
|
||||
}
|
5
gorm/type.go
Normal file
5
gorm/type.go
Normal file
@ -0,0 +1,5 @@
|
||||
package gorm
|
||||
|
||||
import "gorm.io/gorm"
|
||||
|
||||
type DB = gorm.DB
|
Reference in New Issue
Block a user