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 }