summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/migrate/sqlschema
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/uptrace/bun/migrate/sqlschema')
-rw-r--r--vendor/github.com/uptrace/bun/migrate/sqlschema/column.go75
-rw-r--r--vendor/github.com/uptrace/bun/migrate/sqlschema/database.go127
-rw-r--r--vendor/github.com/uptrace/bun/migrate/sqlschema/inspector.go242
-rw-r--r--vendor/github.com/uptrace/bun/migrate/sqlschema/migrator.go49
-rw-r--r--vendor/github.com/uptrace/bun/migrate/sqlschema/table.go60
5 files changed, 0 insertions, 553 deletions
diff --git a/vendor/github.com/uptrace/bun/migrate/sqlschema/column.go b/vendor/github.com/uptrace/bun/migrate/sqlschema/column.go
deleted file mode 100644
index 60f7ea8a6..000000000
--- a/vendor/github.com/uptrace/bun/migrate/sqlschema/column.go
+++ /dev/null
@@ -1,75 +0,0 @@
-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
-}
diff --git a/vendor/github.com/uptrace/bun/migrate/sqlschema/database.go b/vendor/github.com/uptrace/bun/migrate/sqlschema/database.go
deleted file mode 100644
index eb7476c54..000000000
--- a/vendor/github.com/uptrace/bun/migrate/sqlschema/database.go
+++ /dev/null
@@ -1,127 +0,0 @@
-package sqlschema
-
-import (
- "slices"
- "strings"
-
- "github.com/uptrace/bun/internal/ordered"
- "github.com/uptrace/bun/schema"
-)
-
-type Database interface {
- GetTables() *ordered.Map[string, Table]
- GetForeignKeys() map[ForeignKey]string
-}
-
-var _ Database = (*BaseDatabase)(nil)
-
-// BaseDatabase is a base database definition.
-//
-// Dialects and only dialects can use it to implement the Database interface.
-// Other packages must use the Database interface.
-type BaseDatabase struct {
- Tables *ordered.Map[string, Table]
- ForeignKeys map[ForeignKey]string
-}
-
-func (ds BaseDatabase) GetTables() *ordered.Map[string, Table] {
- return ds.Tables
-}
-
-func (ds BaseDatabase) GetForeignKeys() map[ForeignKey]string {
- return ds.ForeignKeys
-}
-
-type ForeignKey struct {
- From ColumnReference
- To ColumnReference
-}
-
-func NewColumnReference(tableName string, columns ...string) ColumnReference {
- return ColumnReference{
- TableName: tableName,
- Column: NewColumns(columns...),
- }
-}
-
-func (fk ForeignKey) DependsOnTable(tableName string) bool {
- return fk.From.TableName == tableName || fk.To.TableName == tableName
-}
-
-func (fk ForeignKey) DependsOnColumn(tableName string, column string) bool {
- return fk.DependsOnTable(tableName) &&
- (fk.From.Column.Contains(column) || fk.To.Column.Contains(column))
-}
-
-// Columns is a hashable representation of []string used to define schema constraints that depend on multiple columns.
-// Although having duplicated column references in these constraints is illegal, Columns neither validates nor enforces this constraint on the caller.
-type Columns string
-
-// NewColumns creates a composite column from a slice of column names.
-func NewColumns(columns ...string) Columns {
- slices.Sort(columns)
- return Columns(strings.Join(columns, ","))
-}
-
-func (c *Columns) String() string {
- return string(*c)
-}
-
-func (c *Columns) AppendQuery(fmter schema.Formatter, b []byte) ([]byte, error) {
- return schema.Safe(*c).AppendQuery(fmter, b)
-}
-
-// Split returns a slice of column names that make up the composite.
-func (c *Columns) Split() []string {
- return strings.Split(c.String(), ",")
-}
-
-// ContainsColumns checks that columns in "other" are a subset of current colums.
-func (c *Columns) ContainsColumns(other Columns) bool {
- columns := c.Split()
-Outer:
- for _, check := range other.Split() {
- for _, column := range columns {
- if check == column {
- continue Outer
- }
- }
- return false
- }
- return true
-}
-
-// Contains checks that a composite column contains the current column.
-func (c *Columns) Contains(other string) bool {
- return c.ContainsColumns(Columns(other))
-}
-
-// Replace renames a column if it is part of the composite.
-// If a composite consists of multiple columns, only one column will be renamed.
-func (c *Columns) Replace(oldColumn, newColumn string) bool {
- columns := c.Split()
- for i, column := range columns {
- if column == oldColumn {
- columns[i] = newColumn
- *c = NewColumns(columns...)
- return true
- }
- }
- return false
-}
-
-// Unique represents a unique constraint defined on 1 or more columns.
-type Unique struct {
- Name string
- Columns Columns
-}
-
-// Equals checks that two unique constraint are the same, assuming both are defined for the same table.
-func (u Unique) Equals(other Unique) bool {
- return u.Columns == other.Columns
-}
-
-type ColumnReference struct {
- TableName string
- Column Columns
-}
diff --git a/vendor/github.com/uptrace/bun/migrate/sqlschema/inspector.go b/vendor/github.com/uptrace/bun/migrate/sqlschema/inspector.go
deleted file mode 100644
index 19d1dc469..000000000
--- a/vendor/github.com/uptrace/bun/migrate/sqlschema/inspector.go
+++ /dev/null
@@ -1,242 +0,0 @@
-package sqlschema
-
-import (
- "context"
- "fmt"
- "strconv"
- "strings"
-
- "github.com/uptrace/bun"
- "github.com/uptrace/bun/internal/ordered"
- "github.com/uptrace/bun/schema"
-)
-
-type InspectorDialect interface {
- schema.Dialect
-
- // Inspector returns a new instance of Inspector for the dialect.
- // Dialects MAY set their default InspectorConfig values in constructor
- // but MUST apply InspectorOptions to ensure they can be overriden.
- //
- // Use ApplyInspectorOptions to reduce boilerplate.
- NewInspector(db *bun.DB, options ...InspectorOption) Inspector
-
- // CompareType returns true if col1 and co2 SQL types are equivalent,
- // i.e. they might use dialect-specifc type aliases (SERIAL ~ SMALLINT)
- // or specify the same VARCHAR length differently (VARCHAR(255) ~ VARCHAR).
- CompareType(Column, Column) bool
-}
-
-// InspectorConfig controls the scope of migration by limiting the objects Inspector should return.
-// Inspectors SHOULD use the configuration directly instead of copying it, or MAY choose to embed it,
-// to make sure options are always applied correctly.
-type InspectorConfig struct {
- // SchemaName limits inspection to tables in a particular schema.
- SchemaName string
-
- // ExcludeTables from inspection.
- ExcludeTables []string
-}
-
-// Inspector reads schema state.
-type Inspector interface {
- Inspect(ctx context.Context) (Database, error)
-}
-
-func WithSchemaName(schemaName string) InspectorOption {
- return func(cfg *InspectorConfig) {
- cfg.SchemaName = schemaName
- }
-}
-
-// WithExcludeTables works in append-only mode, i.e. tables cannot be re-included.
-func WithExcludeTables(tables ...string) InspectorOption {
- return func(cfg *InspectorConfig) {
- cfg.ExcludeTables = append(cfg.ExcludeTables, tables...)
- }
-}
-
-// NewInspector creates a new database inspector, if the dialect supports it.
-func NewInspector(db *bun.DB, options ...InspectorOption) (Inspector, error) {
- dialect, ok := (db.Dialect()).(InspectorDialect)
- if !ok {
- return nil, fmt.Errorf("%s does not implement sqlschema.Inspector", db.Dialect().Name())
- }
- return &inspector{
- Inspector: dialect.NewInspector(db, options...),
- }, nil
-}
-
-func NewBunModelInspector(tables *schema.Tables, options ...InspectorOption) *BunModelInspector {
- bmi := &BunModelInspector{
- tables: tables,
- }
- ApplyInspectorOptions(&bmi.InspectorConfig, options...)
- return bmi
-}
-
-type InspectorOption func(*InspectorConfig)
-
-func ApplyInspectorOptions(cfg *InspectorConfig, options ...InspectorOption) {
- for _, opt := range options {
- opt(cfg)
- }
-}
-
-// inspector is opaque pointer to a database inspector.
-type inspector struct {
- Inspector
-}
-
-// BunModelInspector creates the current project state from the passed bun.Models.
-// Do not recycle BunModelInspector for different sets of models, as older models will not be de-registerred before the next run.
-type BunModelInspector struct {
- InspectorConfig
- tables *schema.Tables
-}
-
-var _ Inspector = (*BunModelInspector)(nil)
-
-func (bmi *BunModelInspector) Inspect(ctx context.Context) (Database, error) {
- state := BunModelSchema{
- BaseDatabase: BaseDatabase{
- ForeignKeys: make(map[ForeignKey]string),
- },
- Tables: ordered.NewMap[string, Table](),
- }
- for _, t := range bmi.tables.All() {
- if t.Schema != bmi.SchemaName {
- continue
- }
-
- columns := ordered.NewMap[string, Column]()
- for _, f := range t.Fields {
-
- sqlType, length, err := parseLen(f.CreateTableSQLType)
- if err != nil {
- return nil, fmt.Errorf("parse length in %q: %w", f.CreateTableSQLType, err)
- }
- columns.Store(f.Name, &BaseColumn{
- Name: f.Name,
- SQLType: strings.ToLower(sqlType), // TODO(dyma): maybe this is not necessary after Column.Eq()
- VarcharLen: length,
- DefaultValue: exprOrLiteral(f.SQLDefault),
- IsNullable: !f.NotNull,
- IsAutoIncrement: f.AutoIncrement,
- IsIdentity: f.Identity,
- })
- }
-
- var unique []Unique
- for name, group := range t.Unique {
- // Create a separate unique index for single-column unique constraints
- // let each dialect apply the default naming convention.
- if name == "" {
- for _, f := range group {
- unique = append(unique, Unique{Columns: NewColumns(f.Name)})
- }
- continue
- }
-
- // Set the name if it is a "unique group", in which case the user has provided the name.
- var columns []string
- for _, f := range group {
- columns = append(columns, f.Name)
- }
- unique = append(unique, Unique{Name: name, Columns: NewColumns(columns...)})
- }
-
- var pk *PrimaryKey
- if len(t.PKs) > 0 {
- var columns []string
- for _, f := range t.PKs {
- columns = append(columns, f.Name)
- }
- pk = &PrimaryKey{Columns: NewColumns(columns...)}
- }
-
- // In cases where a table is defined in a non-default schema in the `bun:table` tag,
- // schema.Table only extracts the name of the schema, but passes the entire tag value to t.Name
- // for backwads-compatibility. For example, a bun model like this:
- // type Model struct { bun.BaseModel `bun:"table:favourite.books` }
- // produces
- // schema.Table{ Schema: "favourite", Name: "favourite.books" }
- tableName := strings.TrimPrefix(t.Name, t.Schema+".")
- state.Tables.Store(tableName, &BunTable{
- BaseTable: BaseTable{
- Schema: t.Schema,
- Name: tableName,
- Columns: columns,
- UniqueConstraints: unique,
- PrimaryKey: pk,
- },
- Model: t.ZeroIface,
- })
-
- for _, rel := range t.Relations {
- // These relations are nominal and do not need a foreign key to be declared in the current table.
- // They will be either expressed as N:1 relations in an m2m mapping table, or will be referenced by the other table if it's a 1:N.
- if rel.Type == schema.ManyToManyRelation ||
- rel.Type == schema.HasManyRelation {
- continue
- }
-
- var fromCols, toCols []string
- for _, f := range rel.BasePKs {
- fromCols = append(fromCols, f.Name)
- }
- for _, f := range rel.JoinPKs {
- toCols = append(toCols, f.Name)
- }
-
- target := rel.JoinTable
- state.ForeignKeys[ForeignKey{
- From: NewColumnReference(t.Name, fromCols...),
- To: NewColumnReference(target.Name, toCols...),
- }] = ""
- }
- }
- return state, nil
-}
-
-func parseLen(typ string) (string, int, error) {
- paren := strings.Index(typ, "(")
- if paren == -1 {
- return typ, 0, nil
- }
- length, err := strconv.Atoi(typ[paren+1 : len(typ)-1])
- if err != nil {
- return typ, 0, err
- }
- return typ[:paren], length, nil
-}
-
-// exprOrLiteral converts string to lowercase, if it does not contain a string literal 'lit'
-// and trims the surrounding '' otherwise.
-// Use it to ensure that user-defined default values in the models are always comparable
-// to those returned by the database inspector, regardless of the case convention in individual drivers.
-func exprOrLiteral(s string) string {
- if strings.HasPrefix(s, "'") && strings.HasSuffix(s, "'") {
- return strings.Trim(s, "'")
- }
- return strings.ToLower(s)
-}
-
-// BunModelSchema is the schema state derived from bun table models.
-type BunModelSchema struct {
- BaseDatabase
-
- Tables *ordered.Map[string, Table]
-}
-
-func (ms BunModelSchema) GetTables() *ordered.Map[string, Table] {
- return ms.Tables
-}
-
-// BunTable provides additional table metadata that is only accessible from scanning bun models.
-type BunTable struct {
- BaseTable
-
- // Model stores the zero interface to the underlying Go struct.
- Model interface{}
-}
diff --git a/vendor/github.com/uptrace/bun/migrate/sqlschema/migrator.go b/vendor/github.com/uptrace/bun/migrate/sqlschema/migrator.go
deleted file mode 100644
index 00500061b..000000000
--- a/vendor/github.com/uptrace/bun/migrate/sqlschema/migrator.go
+++ /dev/null
@@ -1,49 +0,0 @@
-package sqlschema
-
-import (
- "fmt"
-
- "github.com/uptrace/bun"
- "github.com/uptrace/bun/schema"
-)
-
-type MigratorDialect interface {
- schema.Dialect
- NewMigrator(db *bun.DB, schemaName string) Migrator
-}
-
-type Migrator interface {
- AppendSQL(b []byte, operation interface{}) ([]byte, error)
-}
-
-// migrator is a dialect-agnostic wrapper for sqlschema.MigratorDialect.
-type migrator struct {
- Migrator
-}
-
-func NewMigrator(db *bun.DB, schemaName string) (Migrator, error) {
- md, ok := db.Dialect().(MigratorDialect)
- if !ok {
- return nil, fmt.Errorf("%q dialect does not implement sqlschema.Migrator", db.Dialect().Name())
- }
- return &migrator{
- Migrator: md.NewMigrator(db, schemaName),
- }, nil
-}
-
-// BaseMigrator can be embeded by dialect's Migrator implementations to re-use some of the existing bun queries.
-type BaseMigrator struct {
- db *bun.DB
-}
-
-func NewBaseMigrator(db *bun.DB) *BaseMigrator {
- return &BaseMigrator{db: db}
-}
-
-func (m *BaseMigrator) AppendCreateTable(b []byte, model interface{}) ([]byte, error) {
- return m.db.NewCreateTable().Model(model).AppendQuery(m.db.Formatter(), b)
-}
-
-func (m *BaseMigrator) AppendDropTable(b []byte, schemaName, tableName string) ([]byte, error) {
- return m.db.NewDropTable().TableExpr("?.?", bun.Ident(schemaName), bun.Ident(tableName)).AppendQuery(m.db.Formatter(), b)
-}
diff --git a/vendor/github.com/uptrace/bun/migrate/sqlschema/table.go b/vendor/github.com/uptrace/bun/migrate/sqlschema/table.go
deleted file mode 100644
index ec9b77f69..000000000
--- a/vendor/github.com/uptrace/bun/migrate/sqlschema/table.go
+++ /dev/null
@@ -1,60 +0,0 @@
-package sqlschema
-
-import (
- "github.com/uptrace/bun/internal/ordered"
-)
-
-type Table interface {
- GetSchema() string
- GetName() string
- GetColumns() *ordered.Map[string, Column]
- GetPrimaryKey() *PrimaryKey
- GetUniqueConstraints() []Unique
-}
-
-var _ Table = (*BaseTable)(nil)
-
-// BaseTable is a base table definition.
-//
-// Dialects and only dialects can use it to implement the Table interface.
-// Other packages must use the Table interface.
-type BaseTable struct {
- Schema string
- Name string
-
- // ColumnDefinitions map each column name to the column definition.
- Columns *ordered.Map[string, Column]
-
- // PrimaryKey holds the primary key definition.
- // A nil value means that no primary key is defined for the table.
- PrimaryKey *PrimaryKey
-
- // UniqueConstraints defined on the table.
- UniqueConstraints []Unique
-}
-
-// PrimaryKey represents a primary key constraint defined on 1 or more columns.
-type PrimaryKey struct {
- Name string
- Columns Columns
-}
-
-func (td *BaseTable) GetSchema() string {
- return td.Schema
-}
-
-func (td *BaseTable) GetName() string {
- return td.Name
-}
-
-func (td *BaseTable) GetColumns() *ordered.Map[string, Column] {
- return td.Columns
-}
-
-func (td *BaseTable) GetPrimaryKey() *PrimaryKey {
- return td.PrimaryKey
-}
-
-func (td *BaseTable) GetUniqueConstraints() []Unique {
- return td.UniqueConstraints
-}