sqlutil.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package sqlutil
  2. import (
  3. "fmt"
  4. "github.com/go-xorm/xorm"
  5. )
  6. type TestDB struct {
  7. DriverName string
  8. ConnStr string
  9. }
  10. var TestDB_Sqlite3 = TestDB{DriverName: "sqlite3", ConnStr: ":memory:?_loc=Local"}
  11. var TestDB_Mysql = TestDB{DriverName: "mysql", ConnStr: "grafana:password@tcp(localhost:3306)/grafana_tests?collation=utf8mb4_unicode_ci"}
  12. var TestDB_Postgres = TestDB{DriverName: "postgres", ConnStr: "user=grafanatest password=grafanatest host=localhost port=5432 dbname=grafanatest sslmode=disable"}
  13. var TestDB_Mssql = TestDB{DriverName: "mssql", ConnStr: "server=localhost;port=1433;database=grafana_tests;user id=grafana;password=password"}
  14. func CleanDB(x *xorm.Engine) {
  15. if x.DriverName() == "postgres" {
  16. sess := x.NewSession()
  17. defer sess.Close()
  18. if _, err := sess.Exec("DROP SCHEMA public CASCADE;"); err != nil {
  19. panic("Failed to drop schema public")
  20. }
  21. if _, err := sess.Exec("CREATE SCHEMA public;"); err != nil {
  22. panic("Failed to create schema public")
  23. }
  24. } else if x.DriverName() == "mysql" {
  25. tables, _ := x.DBMetas()
  26. sess := x.NewSession()
  27. defer sess.Close()
  28. for _, table := range tables {
  29. if _, err := sess.Exec("set foreign_key_checks = 0"); err != nil {
  30. panic("failed to disable foreign key checks")
  31. }
  32. if _, err := sess.Exec("drop table " + table.Name + " ;"); err != nil {
  33. panic(fmt.Sprintf("failed to delete table: %v, err: %v", table.Name, err))
  34. }
  35. if _, err := sess.Exec("set foreign_key_checks = 1"); err != nil {
  36. panic("failed to disable foreign key checks")
  37. }
  38. }
  39. }
  40. }