postgresql

This commit is contained in:
2023-12-20 23:09:12 +03:00
parent 872217d845
commit 89046d130c
14 changed files with 336 additions and 4 deletions

20
gorm/errors.go Normal file
View 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
View 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
View 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
View File

@ -0,0 +1,5 @@
package gorm
import "gorm.io/gorm"
type DB = gorm.DB