diff --git a/rows_go18.go b/rows_go18.go index 85cf232..6c71eb9 100644 --- a/rows_go18.go +++ b/rows_go18.go @@ -53,12 +53,12 @@ func (rs *rowSetsWithDefinition) ColumnTypeScanType(index int) reflect.Type { return rs.getDefinition(index).ScanType() } -// return definition of current set metadata +// return column definition from current set metadata func (rs *rowSetsWithDefinition) getDefinition(index int) *Column { return rs.sets[rs.pos].def[index] } -// NewRowsWithColumnDefinition see PR-152 +// NewRowsWithColumnDefinition return rows with columns metadata func NewRowsWithColumnDefinition(columns ...*Column) *Rows { cols := make([]string, len(columns)) for i, column := range columns { diff --git a/sqlmock.go b/sqlmock.go index 821a4a1..d074266 100644 --- a/sqlmock.go +++ b/sqlmock.go @@ -20,7 +20,7 @@ import ( // Sqlmock interface serves to create expectations // for any kind of database action in order to mock // and test real database behavior. -type Sqlmock interface { +type SqlmockCommon interface { // ExpectClose queues an expectation for this database // action to be triggered. the *ExpectedClose allows // to mock database response @@ -84,13 +84,6 @@ type Sqlmock interface { // sql driver.Value slice or from the CSV string and // to be used as sql driver.Rows. NewRows(columns []string) *Rows - - // NewRowsWithColumnDefinition allows Rows to be created from a - // sql driver.Value slice with a definition of sql metadata - NewRowsWithColumnDefinition(columns ...*Column) *Rows - - // New Column allows to create a Column - NewColumn(name string) *Column } type sqlmock struct { @@ -444,17 +437,3 @@ func (c *sqlmock) NewRows(columns []string) *Rows { r.converter = c.converter return r } - -// NewRowsWithColumnDefinition allows Rows to be created from a -// sql driver.Value slice with a definition of sql metadata -func (c *sqlmock) NewRowsWithColumnDefinition(columns ...*Column) *Rows { - r := NewRowsWithColumnDefinition(columns...) - r.converter = c.converter - return r -} - -// NewColumn allows to create a Column that can be enhanced with metadata -// using OfType/Nullable/WithLength/WithPrecisionAndScale methods. -func (c *sqlmock) NewColumn(name string) *Column { - return NewColumn(name) -} diff --git a/sqlmock_before_go18.go b/sqlmock_before_go18.go index 1a5b63a..9965e78 100644 --- a/sqlmock_before_go18.go +++ b/sqlmock_before_go18.go @@ -9,6 +9,12 @@ import ( "time" ) +// Sqlmock interface for Go up to 1.7 +type Sqlmock interface { + // Embed common methods + SqlmockCommon +} + type namedValue struct { Name string Ordinal int diff --git a/sqlmock_go18.go b/sqlmock_go18.go index dc37b18..f268900 100644 --- a/sqlmock_go18.go +++ b/sqlmock_go18.go @@ -11,6 +11,19 @@ import ( "time" ) +// Sqlmock interface for Go 1.8+ +type Sqlmock interface { + // Embed common methods + SqlmockCommon + + // NewRowsWithColumnDefinition allows Rows to be created from a + // sql driver.Value slice with a definition of sql metadata + NewRowsWithColumnDefinition(columns ...*Column) *Rows + + // New Column allows to create a Column + NewColumn(name string) *Column +} + // ErrCancelled defines an error value, which can be expected in case of // such cancellation error. var ErrCancelled = errors.New("canceling query due to user request") @@ -327,3 +340,17 @@ func (c *sqlmock) exec(query string, args []driver.NamedValue) (*ExpectedExec, e } // @TODO maybe add ExpectedBegin.WithOptions(driver.TxOptions) + +// NewRowsWithColumnDefinition allows Rows to be created from a +// sql driver.Value slice with a definition of sql metadata +func (c *sqlmock) NewRowsWithColumnDefinition(columns ...*Column) *Rows { + r := NewRowsWithColumnDefinition(columns...) + r.converter = c.converter + return r +} + +// NewColumn allows to create a Column that can be enhanced with metadata +// using OfType/Nullable/WithLength/WithPrecisionAndScale methods. +func (c *sqlmock) NewColumn(name string) *Column { + return NewColumn(name) +}