34 lines
609 B
Go
34 lines
609 B
Go
package database
|
|
|
|
import (
|
|
"atom/container"
|
|
"atom/providers/config"
|
|
"errors"
|
|
"log"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
const (
|
|
DriverMySQL = "mysql"
|
|
DriverSQLite = "sqlite"
|
|
DriverPostgres = "postgres"
|
|
DriverSQLServer = "sqlserver"
|
|
)
|
|
|
|
func init() {
|
|
if err := container.Container.Provide(NewDatabase); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func NewDatabase(config *config.Config) (*gorm.DB, error) {
|
|
switch config.Database.Driver {
|
|
case DriverMySQL:
|
|
return NewMySQL(config.Database.MySQL)
|
|
case DriverSQLite:
|
|
return NewSQLite(config.Database.SQLite)
|
|
}
|
|
return nil, errors.New("failed to connect to db")
|
|
}
|