summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/query_table_create.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/uptrace/bun/query_table_create.go')
-rw-r--r--vendor/github.com/uptrace/bun/query_table_create.go19
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)
}