diff options
| author | 2021-10-24 13:14:37 +0200 | |
|---|---|---|
| committer | 2021-10-24 13:14:37 +0200 | |
| commit | 8b7c3507fe0c8f6e921ee2de2c170ef93eeb7275 (patch) | |
| tree | e79e3f5a59fb8942de79955bd26bf665be0acce8 /vendor/github.com/uptrace/bun/dialect/sqlitedialect | |
| parent | docs typo fix (#290) (diff) | |
| download | gotosocial-8b7c3507fe0c8f6e921ee2de2c170ef93eeb7275.tar.xz | |
upstep bun to v1.0.14 (#291)
Diffstat (limited to 'vendor/github.com/uptrace/bun/dialect/sqlitedialect')
| -rw-r--r-- | vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go | 58 |
1 files changed, 22 insertions, 36 deletions
diff --git a/vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go b/vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go index 32fd8d3fa..74b278a5d 100644 --- a/vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go +++ b/vendor/github.com/uptrace/bun/dialect/sqlitedialect/dialect.go @@ -2,8 +2,7 @@ package sqlitedialect import ( "database/sql" - "reflect" - "sync" + "encoding/hex" "github.com/uptrace/bun/dialect" "github.com/uptrace/bun/dialect/feature" @@ -12,11 +11,10 @@ import ( ) type Dialect struct { + schema.BaseDialect + tables *schema.Tables features feature.Feature - - appenderMap sync.Map - scannerMap sync.Map } func New() *Dialect { @@ -50,48 +48,36 @@ func (d *Dialect) OnTable(table *schema.Table) { } func (d *Dialect) onField(field *schema.Field) { - // INTEGER PRIMARY KEY is an alias for the ROWID. - // It is safe to convert all ints to INTEGER, because SQLite types don't have size. - switch field.DiscoveredSQLType { - case sqltype.SmallInt, sqltype.BigInt: - field.DiscoveredSQLType = sqltype.Integer - } + field.DiscoveredSQLType = fieldSQLType(field) } func (d *Dialect) IdentQuote() byte { return '"' } -func (d *Dialect) Append(fmter schema.Formatter, b []byte, v interface{}) []byte { - return schema.Append(fmter, b, v, nil) -} - -func (d *Dialect) Appender(typ reflect.Type) schema.AppenderFunc { - if v, ok := d.appenderMap.Load(typ); ok { - return v.(schema.AppenderFunc) +func (d *Dialect) AppendBytes(b []byte, bs []byte) []byte { + if bs == nil { + return dialect.AppendNull(b) } - fn := schema.Appender(typ, nil) + b = append(b, `X'`...) - if v, ok := d.appenderMap.LoadOrStore(typ, fn); ok { - return v.(schema.AppenderFunc) - } - return fn -} - -func (d *Dialect) FieldAppender(field *schema.Field) schema.AppenderFunc { - return schema.FieldAppender(d, field) -} + s := len(b) + b = append(b, make([]byte, hex.EncodedLen(len(bs)))...) + hex.Encode(b[s:], bs) -func (d *Dialect) Scanner(typ reflect.Type) schema.ScannerFunc { - if v, ok := d.scannerMap.Load(typ); ok { - return v.(schema.ScannerFunc) - } + b = append(b, '\'') - fn := scanner(typ) + return b +} - if v, ok := d.scannerMap.LoadOrStore(typ, fn); ok { - return v.(schema.ScannerFunc) +func fieldSQLType(field *schema.Field) string { + switch field.DiscoveredSQLType { + case sqltype.SmallInt, sqltype.BigInt: + // INTEGER PRIMARY KEY is an alias for the ROWID. + // It is safe to convert all ints to INTEGER, because SQLite types don't have size. + return sqltype.Integer + default: + return field.DiscoveredSQLType } - return fn } |
