mirror of
https://github.com/zhashkevych/go-sqlxmock.git
synced 2024-11-24 08:12:13 +02:00
78 lines
1.6 KiB
Go
78 lines
1.6 KiB
Go
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
|
|
}
|