summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2024-01-15 14:08:07 +0100
committerLibravatar GitHub <noreply@github.com>2024-01-15 14:08:07 +0100
commit6433a505820cfeb43990a3453a0ed8b24e432b7d (patch)
tree3f968a63d6a77991df95fde88ee0f08727f26eb6 /vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go
parent[chore]: Bump github.com/tdewolff/minify/v2 from 2.20.12 to 2.20.14 (#2530) (diff)
downloadgotosocial-6433a505820cfeb43990a3453a0ed8b24e432b7d.tar.xz
[chore] update bun + extras v1.1.16 -> v1.1.17 (#2534)
Diffstat (limited to 'vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go')
-rw-r--r--vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go b/vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go
index 3c809e7a7..3bfe500ff 100644
--- a/vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go
+++ b/vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go
@@ -39,6 +39,7 @@ func New() *Dialect {
feature.InsertOnConflict |
feature.TableNotExists |
feature.SelectExists |
+ feature.AutoIncrement |
feature.CompositeIn
return d
}
@@ -91,6 +92,25 @@ func (d *Dialect) DefaultVarcharLen() int {
return 0
}
+// AppendSequence adds AUTOINCREMENT keyword to the column definition. As per [documentation],
+// AUTOINCREMENT is only valid for INTEGER PRIMARY KEY, and this method will be a noop for other columns.
+//
+// Because this is a valid construct:
+// CREATE TABLE ("id" INTEGER PRIMARY KEY AUTOINCREMENT);
+// and this is not:
+// CREATE TABLE ("id" INTEGER AUTOINCREMENT, PRIMARY KEY ("id"));
+// AppendSequence adds a primary key constraint as a *side-effect*. Callers should expect it to avoid building invalid SQL.
+// SQLite also [does not support] AUTOINCREMENT column in composite primary keys.
+//
+// [documentation]: https://www.sqlite.org/autoinc.html
+// [does not support]: https://stackoverflow.com/a/6793274/14726116
+func (d *Dialect) AppendSequence(b []byte, table *schema.Table, field *schema.Field) []byte {
+ if field.IsPK && len(table.PKs) == 1 && field.CreateTableSQLType == sqltype.Integer {
+ b = append(b, " PRIMARY KEY AUTOINCREMENT"...)
+ }
+ return b
+}
+
func fieldSQLType(field *schema.Field) string {
switch field.DiscoveredSQLType {
case sqltype.SmallInt, sqltype.BigInt: