sqlutil.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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&loc=Local"}
  12. var TestDB_Postgres = TestDB{DriverName: "postgres", ConnStr: "user=grafanatest password=grafanatest host=localhost port=5432 dbname=grafanatest sslmode=disable"}
  13. func CleanDB(x *xorm.Engine) {
  14. if x.DriverName() == "postgres" {
  15. sess := x.NewSession()
  16. defer sess.Close()
  17. if _, err := sess.Exec("DROP SCHEMA public CASCADE;"); err != nil {
  18. panic("Failed to drop schema public")
  19. }
  20. if _, err := sess.Exec("CREATE SCHEMA public;"); err != nil {
  21. panic("Failed to create schema public")
  22. }
  23. } else if x.DriverName() == "mysql" {
  24. tables, _ := x.DBMetas()
  25. sess := x.NewSession()
  26. defer sess.Close()
  27. for _, table := range tables {
  28. if _, err := sess.Exec("set foreign_key_checks = 0"); err != nil {
  29. panic("failed to disable foreign key checks")
  30. }
  31. if _, err := sess.Exec("drop table " + table.Name + " ;"); err != nil {
  32. panic(fmt.Sprintf("failed to delete table: %v, err: %v", table.Name, err))
  33. }
  34. if _, err := sess.Exec("set foreign_key_checks = 1"); err != nil {
  35. panic("failed to disable foreign key checks")
  36. }
  37. }
  38. }
  39. }