package database import ( "database/sql" "fmt" "github.com/gin-gonic/gin" _ "github.com/go-sql-driver/mysql" _ "github.com/lib/pq" _ "github.com/mattn/go-sqlite3" _ "github.com/microsoft/go-mssqldb" ) const CONNECTION_SUCCESS string = ` Connection successful! ` const CONNECTION_FAILURE string = ` Connection failed! %s ` // Test a connection to a database func TestConnectionURL(c *gin.Context) { var driver string = c.PostForm("db-driver") switch c.PostForm("db-driver") { case "postgres": driver = "postgres" case "mysql", "mariadb": driver = "mysql" case "sqlserver": driver = "sqlserver" case "sqlite3": driver = "sqlite3" default: c.String(200, fmt.Sprintf(CONNECTION_FAILURE, "Unsupported driver")) return } // Open connection conn, err := sql.Open(driver, c.PostForm("db-url")) if err != nil { fmt.Println(err) c.String(200, fmt.Sprintf(CONNECTION_FAILURE, err.Error())) return } // Ping/test connection if err := conn.Ping(); err != nil { c.String(200, fmt.Sprintf(CONNECTION_FAILURE, err.Error())) return } else { fmt.Printf("%+v\n", conn.Driver()) } c.String(200, CONNECTION_SUCCESS) }