2024-06-06 10:04:51 +02:00
|
|
|
package db
|
|
|
|
|
|
|
|
import (
|
|
|
|
"database/sql"
|
|
|
|
"fmt"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
DriverSqlite3 = "sqlite3"
|
2024-06-23 10:53:56 +02:00
|
|
|
DriverMysql = "mysql"
|
2024-06-06 10:04:51 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
type Config struct {
|
|
|
|
Driver string
|
|
|
|
Name string
|
|
|
|
Host string
|
|
|
|
User string
|
|
|
|
Password string
|
|
|
|
}
|
|
|
|
|
2024-06-23 10:53:56 +02:00
|
|
|
func NewSQL(cfg Config) (*sql.DB, error) {
|
2024-06-06 10:04:51 +02:00
|
|
|
switch cfg.Driver {
|
|
|
|
case DriverSqlite3:
|
|
|
|
name := cfg.Name
|
|
|
|
if len(name) == 0 {
|
|
|
|
name = "app_db"
|
|
|
|
}
|
|
|
|
return sql.Open(cfg.Driver, name)
|
|
|
|
default:
|
|
|
|
return nil, fmt.Errorf("invalid database driver (%s): currently only sqlite3 is supported", cfg.Driver)
|
|
|
|
}
|
|
|
|
}
|