| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package tool
- import (
- "database/sql"
- "log"
- "strings"
- _ "github.com/go-sql-driver/mysql"
- _ "modernc.org/sqlite"
- )
- func Temp_DB_connect() *sql.DB {
- db, err := sql.Open("sqlite", "./data/temp.db")
- if err != nil {
- log.Fatal(err)
- }
- return db
- }
- func DB_connect() *sql.DB {
- m_db := Temp_DB_connect()
- defer m_db.Close()
- db_set := map[string]string{}
- rows, err := m_db.Query("select name, data from temp where name in ('db_name', 'db_type')")
- if err != nil {
- log.Fatal(err)
- }
- defer rows.Close()
- for rows.Next() {
- var name string
- var data string
- err := rows.Scan(&name, &data)
- if err != nil {
- log.Fatal(err)
- }
- db_set[name] = data
- }
- if db_set["db_type"] == "sqlite" {
- db, err := sql.Open("sqlite", db_set["db_name"]+".db")
- if err != nil {
- log.Fatal(err)
- }
- return db
- } else {
- rows, err := m_db.Query("select name, data from temp where name in ('db_mysql_host', 'db_mysql_user', 'db_mysql_pw', 'db_mysql_port')")
- if err != nil {
- log.Fatal(err)
- }
- defer rows.Close()
- for rows.Next() {
- var name string
- var data string
- err := rows.Scan(&name, &data)
- if err != nil {
- log.Fatal(err)
- }
- db_set[name] = data
- }
- db, err := sql.Open("mysql", db_set["db_mysql_user"]+":"+db_set["db_mysql_pw"]+"@tcp("+db_set["db_mysql_host"]+":"+db_set["db_mysql_port"]+")/"+db_set["db_name"])
- if err != nil {
- log.Fatal(err)
- }
- return db
- }
- }
- func DB_change(data string) string {
- m_db := Temp_DB_connect()
- defer m_db.Close()
- var db_set_type string
- err := m_db.QueryRow("select data from temp where name = 'db_type'").Scan(&db_set_type)
- if err != nil {
- if err == sql.ErrNoRows {
- db_set_type = "sqlite"
- } else {
- log.Fatal(err)
- }
- }
- if db_set_type == "mysql" {
- data = strings.Replace(data, "random()", "rand()", -1)
- data = strings.Replace(data, "collate nocase", "collate utf8mb4_general_ci", -1)
- }
- return data
- }
|