package database import ( _ "embed" "log" _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" _ "github.com/lib/pq" "github.com/spf13/viper" _ "modernc.org/sqlite" ) var ( //go:embed init/users.sql userTable string //go:embed init/otp.sql otpTable string ) func InitDB() (*sqlx.DB, error) { driver := viper.GetString("database.driver") dsn := viper.GetString("database.dsn") db, err := sqlx.Open(driver, dsn) if err != nil { return nil, err } if err := db.Ping(); err != nil { return nil, err } log.Println("Connected to database!") return db, nil } func MigrateDB(db *sqlx.DB) error { _, err := db.Exec(userTable) if err != nil { return err } _, err = db.Exec(otpTable) if err != nil { return err } return nil }