summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/migrate/sqlschema/column.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/uptrace/bun/migrate/sqlschema/column.go')
-rw-r--r--vendor/github.com/uptrace/bun/migrate/sqlschema/column.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/vendor/github.com/uptrace/bun/migrate/sqlschema/column.go b/vendor/github.com/uptrace/bun/migrate/sqlschema/column.go
new file mode 100644
index 000000000..60f7ea8a6
--- /dev/null
+++ b/vendor/github.com/uptrace/bun/migrate/sqlschema/column.go
@@ -0,0 +1,75 @@
+package sqlschema
+
+import (
+ "fmt"
+
+ "github.com/uptrace/bun/schema"
+)
+
+type Column interface {
+ GetName() string
+ GetSQLType() string
+ GetVarcharLen() int
+ GetDefaultValue() string
+ GetIsNullable() bool
+ GetIsAutoIncrement() bool
+ GetIsIdentity() bool
+ AppendQuery(schema.Formatter, []byte) ([]byte, error)
+}
+
+var _ Column = (*BaseColumn)(nil)
+
+// BaseColumn is a base column definition that stores various attributes of a column.
+//
+// Dialects and only dialects can use it to implement the Column interface.
+// Other packages must use the Column interface.
+type BaseColumn struct {
+ Name string
+ SQLType string
+ VarcharLen int
+ DefaultValue string
+ IsNullable bool
+ IsAutoIncrement bool
+ IsIdentity bool
+ // TODO: add Precision and Cardinality for timestamps/bit-strings/floats and arrays respectively.
+}
+
+func (cd BaseColumn) GetName() string {
+ return cd.Name
+}
+
+func (cd BaseColumn) GetSQLType() string {
+ return cd.SQLType
+}
+
+func (cd BaseColumn) GetVarcharLen() int {
+ return cd.VarcharLen
+}
+
+func (cd BaseColumn) GetDefaultValue() string {
+ return cd.DefaultValue
+}
+
+func (cd BaseColumn) GetIsNullable() bool {
+ return cd.IsNullable
+}
+
+func (cd BaseColumn) GetIsAutoIncrement() bool {
+ return cd.IsAutoIncrement
+}
+
+func (cd BaseColumn) GetIsIdentity() bool {
+ return cd.IsIdentity
+}
+
+// AppendQuery appends full SQL data type.
+func (c *BaseColumn) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error) {
+ b = append(b, c.SQLType...)
+ if c.VarcharLen == 0 {
+ return b, nil
+ }
+ b = append(b, "("...)
+ b = append(b, fmt.Sprint(c.VarcharLen)...)
+ b = append(b, ")"...)
+ return b, nil
+}