45 lines
751 B
Go
45 lines
751 B
Go
package database
|
|
|
|
import (
|
|
"errors"
|
|
|
|
slogGorm "github.com/orandin/slog-gorm"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type dbService struct {
|
|
dbType string
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewDatabaseService(dbType, connection, logLevel string) (DatabaseService, error) {
|
|
|
|
var dialector gorm.Dialector
|
|
switch dbType {
|
|
case "sqlite":
|
|
dialector = sqlite.Open(connection)
|
|
case "postgres":
|
|
dialector = postgres.Open(connection)
|
|
default:
|
|
return nil, errors.New("unknown dbType")
|
|
}
|
|
|
|
db, err := gorm.Open(dialector, &gorm.Config{
|
|
Logger: slogGorm.New(),
|
|
})
|
|
|
|
if err == nil {
|
|
db.DB()
|
|
db.AutoMigrate()
|
|
// db.LogMode(true)
|
|
}
|
|
result := &dbService{}
|
|
result.dbType = dbType
|
|
result.db = db
|
|
|
|
return result, err
|
|
|
|
}
|