diff options
Diffstat (limited to 'vendor/github.com/uptrace/bun/query_table_create.go')
| -rw-r--r-- | vendor/github.com/uptrace/bun/query_table_create.go | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/vendor/github.com/uptrace/bun/query_table_create.go b/vendor/github.com/uptrace/bun/query_table_create.go index 0ae56bf78..3e1474ed7 100644 --- a/vendor/github.com/uptrace/bun/query_table_create.go +++ b/vendor/github.com/uptrace/bun/query_table_create.go @@ -5,7 +5,7 @@ import ( "context" "database/sql" "fmt" - "sort" + "slices" "strconv" "strings" @@ -276,7 +276,7 @@ func (q *CreateTableQuery) appendUniqueConstraints(fmter schema.Formatter, b []b for key := range unique { keys = append(keys, key) } - sort.Strings(keys) + slices.Sort(keys) for _, key := range keys { if key == "" { @@ -308,8 +308,16 @@ func (q *CreateTableQuery) appendUniqueConstraint( // appendFKConstraintsRel appends a FOREIGN KEY clause for each of the model's existing relations. func (q *CreateTableQuery) appendFKConstraintsRel(fmter schema.Formatter, b []byte) (_ []byte, err error) { - for _, rel := range q.tableModel.Table().Relations { - if rel.References() { + relations := q.tableModel.Table().Relations + + keys := make([]string, 0, len(relations)) + for key := range relations { + keys = append(keys, key) + } + slices.Sort(keys) + + for _, key := range keys { + if rel := relations[key]; rel.References() { b, err = q.appendFK(fmter, b, schema.QueryWithArgs{ Query: "(?) REFERENCES ? (?) ? ?", Args: []interface{}{ @@ -400,11 +408,12 @@ func (q *CreateTableQuery) afterCreateTableHook(ctx context.Context) error { return nil } +// String returns the generated SQL query string. The CreateTableQuery instance must not be +// modified during query generation to ensure multiple calls to String() return identical results. func (q *CreateTableQuery) String() string { buf, err := q.AppendQuery(q.db.Formatter(), nil) if err != nil { panic(err) } - return string(buf) } |
