github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/src/APIRestORM/db/databaseGO.go (about) 1 package db 2 3 import ( 4 "database/sql" 5 "fmt" 6 7 _ "github.com/go-sql-driver/mysql" 8 "gorm.io/driver/mysql" 9 "gorm.io/gorm" 10 ) 11 12 var dsn = "xxxx:xxxx@tcp(127.0.0.1:3306)/goweb_db?charset=utf8mb4&parseTime=True&loc=Local" 13 var DataBase = func() (db *gorm.DB) { 14 if db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}); err != nil { 15 fmt.Println("Error en la conexion", err) 16 panic(err) 17 } else { 18 fmt.Println("Conexion Exitosa.") 19 return db 20 } 21 }() 22 23 //username:password@tcp(localhost:3306)/database 24 const url = "xxxx:xxxx@tcp(localhost:3306)/goweb_db" 25 26 var db *sql.DB 27 28 func Connect_DB() { 29 30 conn, err := sql.Open("mysql", url) 31 32 if err != nil { 33 panic(err) 34 } 35 36 fmt.Println("Conexion Exitosa") 37 38 db = conn 39 } 40 func Close_DB() { 41 db.Close() 42 } 43 44 func Ping_DB() { 45 46 if err := db.Ping(); err != nil { 47 panic(err) 48 } 49 } 50 51 func ExistsTable(tableName string) bool { 52 sql := fmt.Sprintf("SHOW TABLES LIKE '%s'", tableName) 53 rows, err := db.Query(sql) 54 55 if err != nil { 56 fmt.Println("Error:", err) 57 } 58 return rows.Next() 59 } 60 61 func CreateTable_DB(schema string, name string) { 62 if !ExistsTable(name) { 63 _, err := db.Exec(schema) 64 if err != nil { 65 fmt.Println(err) 66 } 67 } else { 68 fmt.Println("[!] La tabla ya Existe !!") 69 } 70 } 71 72 func TruncateTable(tableName string) { 73 sql := fmt.Sprintf("TRUNCATE %s", tableName) 74 Exec(sql) 75 } 76 77 func Exec(query string, args ...interface{}) (sql.Result, error) { 78 Connect_DB() 79 result, err := db.Exec(query, args...) 80 Close_DB() 81 if err != nil { 82 fmt.Println(err) 83 } 84 return result, err 85 } 86 87 func Query(query string, args ...interface{}) (*sql.Rows, error) { 88 Connect_DB() 89 rows, err := db.Query(query, args...) 90 Close_DB() 91 92 if err != nil { 93 fmt.Println(err) 94 } 95 96 return rows, err 97 }