30 lines
		
	
	
	
		
			834 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			834 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"gorm.io/driver/mysql"
 | |
| 	"gorm.io/driver/postgres"
 | |
| 	"gorm.io/driver/sqlite"
 | |
| 	"gorm.io/gorm"
 | |
| 	"gorm.io/gorm/logger"
 | |
| )
 | |
| 
 | |
| var gconfig = &gorm.Config{
 | |
| 	Logger: logger.Default.LogMode(logger.Silent),
 | |
| }
 | |
| 
 | |
| // NewDatabaseFromConfig creates a database object from configuration structure
 | |
| func NewDatabaseFromConfig(config DatabaseConfig) (*gorm.DB, error) {
 | |
| 	switch config.Type {
 | |
| 	case "postgres":
 | |
| 		return gorm.Open(postgres.New(postgres.Config{DSN: config.DSN}), gconfig)
 | |
| 	case "mysql":
 | |
| 		return gorm.Open(mysql.New(mysql.Config{DSN: config.DSN}), gconfig)
 | |
| 	default:
 | |
| 		return gorm.Open(sqlite.Open(config.DSN), gconfig)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // NewDatabaseFromFile creates a database object from path to file (passed as argument)
 | |
| func NewDatabaseFromFile(path string) (*gorm.DB, error) {
 | |
| 	return gorm.Open(sqlite.Open(path), gconfig)
 | |
| }
 |