1
0
Fork 0

EQ results in assoc mode will include nil rows

master
Philip O'Toole 1 year ago
parent f5d8df9e2e
commit f53cb833bb

@ -40,6 +40,14 @@ type AssociativeRows struct {
Time float64 `json:"time,omitempty"`
}
// ResultWithRows represents the outcome of an operation that changes rows, but also
// includes an nil rows object, so clients can distinguish between a query and execute
// result.
type ResultWithRows struct {
Result
Rows []map[string]interface{} `json:"rows"`
}
// NewResultRowsFromExecuteQueryResponse returns an API object from an
// ExecuteQueryResponse.
func NewResultRowsFromExecuteQueryResponse(e *command.ExecuteQueryResponse) (interface{}, error) {
@ -52,12 +60,18 @@ func NewResultRowsFromExecuteQueryResponse(e *command.ExecuteQueryResponse) (int
"error": err,
}, nil
}
return nil, errors.New("no ExecuteResult or QueryRows")
return nil, errors.New("no ExecuteResult, QueryRows, or Error")
}
func NewAssociativeResultRowsFromExecuteQueryResponse(e *command.ExecuteQueryResponse) (interface{}, error) {
if er := e.GetE(); er != nil {
return NewResultFromExecuteResult(er)
r, err := NewResultFromExecuteResult(er)
if err != nil {
return nil, err
}
return &ResultWithRows{
Result: *r,
}, nil
} else if qr := e.GetQ(); qr != nil {
return NewAssociativeRowsFromQueryRows(qr)
} else if err := e.GetError(); err != "" {
@ -65,7 +79,7 @@ func NewAssociativeResultRowsFromExecuteQueryResponse(e *command.ExecuteQueryRes
"error": err,
}, nil
}
return nil, errors.New("no ExecuteResult or QueryRows")
return nil, errors.New("no ExecuteResult, QueryRows, or Error")
}
// NewResultFromExecuteResult returns an API Result object from an ExecuteResult.

@ -481,7 +481,7 @@ func Test_MarshalExecuteQueryAssociativeResponse(t *testing.T) {
},
},
},
expected: `[{"last_insert_id":123,"rows_affected":456}]`,
expected: `[{"last_insert_id":123,"rows_affected":456,"rows":null}]`,
},
{
name: "Test with QueryRows",
@ -554,7 +554,7 @@ func Test_MarshalExecuteQueryAssociativeResponse(t *testing.T) {
},
},
},
expected: `[{"last_insert_id":123,"rows_affected":456},{"error":"unique constraint failed"},{"types":{"column1":"int","column2":"text"},"rows":[{"column1":456,"column2":"declan"}]}]`,
expected: `[{"last_insert_id":123,"rows_affected":456,"rows":null},{"error":"unique constraint failed"},{"types":{"column1":"int","column2":"text"},"rows":[{"column1":456,"column2":"declan"}]}]`,
},
}

Loading…
Cancel
Save