db_connect.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package tool
  2. import (
  3. "database/sql"
  4. "encoding/json"
  5. "log"
  6. "strings"
  7. _ "github.com/go-sql-driver/mysql"
  8. _ "modernc.org/sqlite"
  9. )
  10. func Temp_DB_connect() *sql.DB {
  11. db, err := sql.Open("sqlite", "./data/temp.db")
  12. if err != nil {
  13. log.Fatal(err)
  14. }
  15. return db
  16. }
  17. func DB_connect() *sql.DB {
  18. m_db := Temp_DB_connect()
  19. defer m_db.Close()
  20. var db_set_str string
  21. err := m_db.QueryRow("select data from temp where name = 'db_set'").Scan(&db_set_str)
  22. if err != nil {
  23. if err == sql.ErrNoRows {
  24. db_set_str = "{}"
  25. } else {
  26. log.Fatal(err)
  27. }
  28. }
  29. db_set := map[string]string{}
  30. json.Unmarshal([]byte(db_set_str), &db_set)
  31. if db_set["type"] == "sqlite" {
  32. db, err := sql.Open("sqlite", db_set["name"]+".db")
  33. if err != nil {
  34. log.Fatal(err)
  35. }
  36. return db
  37. } else {
  38. db, err := sql.Open("mysql", db_set["mysql_user"]+":"+db_set["mysql_pw"]+"@tcp("+db_set["mysql_host"]+":"+db_set["mysql_port"]+")/"+db_set["name"])
  39. if err != nil {
  40. log.Fatal(err)
  41. }
  42. return db
  43. }
  44. }
  45. func DB_change(data string) string {
  46. m_db := Temp_DB_connect()
  47. defer m_db.Close()
  48. var db_set_type string
  49. err := m_db.QueryRow("select data from temp where name = 'db_set_type'").Scan(&db_set_type)
  50. if err != nil {
  51. if err == sql.ErrNoRows {
  52. db_set_type = "sqlite"
  53. } else {
  54. log.Fatal(err)
  55. }
  56. }
  57. if db_set_type == "mysql" {
  58. data = strings.Replace(data, "random()", "rand()", -1)
  59. data = strings.Replace(data, "collate nocase", "collate utf8mb4_general_ci", -1)
  60. }
  61. return data
  62. }