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  }