You've already forked go-sqlmock
mirror of
https://github.com/DATA-DOG/go-sqlmock.git
synced 2025-07-05 00:38:45 +02:00
Add Column Metadata #152
This commit is contained in:
77
column.go
Normal file
77
column.go
Normal file
@ -0,0 +1,77 @@
|
||||
package sqlmock
|
||||
|
||||
import "reflect"
|
||||
|
||||
// Column is a mocked column Metadata for rows.ColumnTypes()
|
||||
type Column struct {
|
||||
name string
|
||||
dbType string
|
||||
nullable bool
|
||||
nullableOk bool
|
||||
length int64
|
||||
lengthOk bool
|
||||
precision int64
|
||||
scale int64
|
||||
psOk bool
|
||||
scanType reflect.Type
|
||||
}
|
||||
|
||||
func (c *Column) Name() string {
|
||||
return c.name
|
||||
}
|
||||
|
||||
func (c *Column) DbType() string {
|
||||
return c.dbType
|
||||
}
|
||||
|
||||
func (c *Column) IsNullable() (bool, bool) {
|
||||
return c.nullable, c.nullableOk
|
||||
}
|
||||
|
||||
func (c *Column) Length() (int64, bool) {
|
||||
return c.length, c.lengthOk
|
||||
}
|
||||
|
||||
func (c *Column) PrecisionScale() (int64, int64, bool) {
|
||||
return c.precision, c.scale, c.psOk
|
||||
}
|
||||
|
||||
func (c *Column) ScanType() reflect.Type {
|
||||
return c.scanType
|
||||
}
|
||||
|
||||
// NewColumn returns a Column with specified name
|
||||
func NewColumn(name string) *Column {
|
||||
return &Column{
|
||||
name: name,
|
||||
}
|
||||
}
|
||||
|
||||
// Nullable returns the column with nullable metadata set
|
||||
func (c *Column) Nullable(nullable bool) *Column {
|
||||
c.nullable = nullable
|
||||
c.nullableOk = true
|
||||
return c
|
||||
}
|
||||
|
||||
// OfType returns the column with type metadata set
|
||||
func (c *Column) OfType(dbType string, sampleValue interface{}) *Column {
|
||||
c.dbType = dbType
|
||||
c.scanType = reflect.TypeOf(sampleValue)
|
||||
return c
|
||||
}
|
||||
|
||||
// WithLength returns the column with length metadata set.
|
||||
func (c *Column) WithLength(length int64) *Column {
|
||||
c.length = length
|
||||
c.lengthOk = true
|
||||
return c
|
||||
}
|
||||
|
||||
// WithPrecisionAndScale returns the column with precision and scale metadata set.
|
||||
func (c *Column) WithPrecisionAndScale(precision, scale int64) *Column {
|
||||
c.precision = precision
|
||||
c.scale = scale
|
||||
c.psOk = true
|
||||
return c
|
||||
}
|
Reference in New Issue
Block a user