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)
}