func (td *TearDown) TearDown(tdb *stock.StockDB, t *testing.T) error { sort.Sort(td) // sort actions so that CREATE is reversed last for _, change := range *td { var err error = nil switch change.Action { case CREATE: // reverse of table creation is dropping the table exec := strings.Join([]string{"DROP TABLE ", change.Table}, "") _, err = tdb.Exec(exec) case INSERT: // reverse of insert is delete, symbol and time is key exec := strings.Join([]string{"DELETE FROM ", change.Table, " WHERE Symbol = $1 AND Time = $2"}, "") _, err = tdb.Exec(exec, change.Key.Symbol, stock.TimeForSQL(change.Key.Date)) } if err != nil { return err } } return nil }