2022-05-26 23:58:51 +02:00

65 lines
1.2 KiB
Go

package photosapi
import (
"fmt"
"log"
"os"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
type DBConfig struct {
Host string
User string
Password string
Port uint
Database string
}
func (d *DBConfig) DSN() string {
return fmt.Sprintf(
"host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=UTC",
d.Host,
d.User,
d.Password,
d.Database,
d.Port,
)
}
func (s *Service) Migrate() {
tx := s.DB
tx.AutoMigrate(&Account{})
tx.AutoMigrate(&File{})
}
func (s *Service) DBConnect() {
db, err := gorm.Open(postgres.Open(s.Config.DB.DSN()), &gorm.Config{
Logger: logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
logger.Config{
SlowThreshold: time.Second, // Slow SQL threshold
LogLevel: logger.Error, // Log level
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
Colorful: true, // Disable color
},
),
SkipDefaultTransaction: true,
PrepareStmt: true,
})
if err != nil {
s.LogErr.Fatal("DB", err)
}
s.DB = db
}
func (s *Service) SetupDB() {
s.DBConnect()
s.Migrate()
}