func CleanDB(x *xorm.Engine) { if x.DriverName() == "postgres" { sess := x.NewSession() defer sess.Close() if _, err := sess.Exec("DROP SCHEMA public CASCADE;"); err != nil { panic("Failed to drop schema public") } if _, err := sess.Exec("CREATE SCHEMA public;"); err != nil { panic("Failed to create schema public") } } else if x.DriverName() == "mysql" { tables, _ := x.DBMetas() sess := x.NewSession() defer sess.Close() for _, table := range tables { if _, err := sess.Exec("set foreign_key_checks = 0"); err != nil { panic("failed to disable foreign key checks") } if _, err := sess.Exec("drop table " + table.Name + " ;"); err != nil { panic(fmt.Sprintf("failed to delete table: %v, err: %v", table.Name, err)) } if _, err := sess.Exec("set foreign_key_checks = 1"); err != nil { panic("failed to disable foreign key checks") } } } }
func testMetaInfo(engine *xorm.Engine, t *testing.T) { tables, err := engine.DBMetas() if err != nil { t.Error(err) panic(err) } for _, table := range tables { fmt.Println(table.Name) //for _, col := range table.Columns() { //TODO: engine.dialect show exported //fmt.Println(col.String(engine.dia)) //} for _, index := range table.Indexes { fmt.Println(index.Name, index.Type, strings.Join(index.Cols, ",")) } } }