func GetAll(m CrudResource) httperr.Handler {
	return func(w http.ResponseWriter, r *http.Request) error {
		dbmap, err := getDB()
		defer dbmap.Db.Close()
		if err != nil {
			return err
		}

		values := r.URL.Query()
		sql, args, err := querystr.Query(m, m.TableName(), values)
		if err != nil {
			return clientError(err)
		}

		models, err := dbmap.Select(m, sql, args...)
		if err != nil {
			return clientError(err)
		}

		return getAllWriteJSON(w, values, models)
	}
}
func TestQueries(t *testing.T) {
	for _, testCase := range testCases {
		sql, args, err := querystr.Query(&testItem{}, tableName, testCase.v)

		if err == nil && testCase.err != nil || err != nil && testCase.err == nil {
			t.Fatal(err, "not equal", testCase.err)
		}

		if err != nil {
			continue
		}

		if strings.ToLower(sql) != strings.ToLower(testCase.sql) {
			t.Fatal(sql + " should equal " + testCase.sql)
		}

		for i, arg := range args {
			if !reflect.DeepEqual(arg, testCase.args[i]) {
				t.Fatal(arg, "should equal", testCase.args[i])
			}
		}

	}
}