summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/schema/dialect.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/uptrace/bun/schema/dialect.go')
-rw-r--r--vendor/github.com/uptrace/bun/schema/dialect.go99
1 files changed, 99 insertions, 0 deletions
diff --git a/vendor/github.com/uptrace/bun/schema/dialect.go b/vendor/github.com/uptrace/bun/schema/dialect.go
new file mode 100644
index 000000000..c50de715a
--- /dev/null
+++ b/vendor/github.com/uptrace/bun/schema/dialect.go
@@ -0,0 +1,99 @@
+package schema
+
+import (
+ "database/sql"
+ "reflect"
+ "sync"
+
+ "github.com/uptrace/bun/dialect"
+ "github.com/uptrace/bun/dialect/feature"
+)
+
+type Dialect interface {
+ Init(db *sql.DB)
+
+ Name() dialect.Name
+ Features() feature.Feature
+
+ Tables() *Tables
+ OnTable(table *Table)
+
+ IdentQuote() byte
+ Append(fmter Formatter, b []byte, v interface{}) []byte
+ Appender(typ reflect.Type) AppenderFunc
+ FieldAppender(field *Field) AppenderFunc
+ Scanner(typ reflect.Type) ScannerFunc
+}
+
+//------------------------------------------------------------------------------
+
+type nopDialect struct {
+ tables *Tables
+ features feature.Feature
+
+ appenderMap sync.Map
+ scannerMap sync.Map
+}
+
+func newNopDialect() *nopDialect {
+ d := new(nopDialect)
+ d.tables = NewTables(d)
+ d.features = feature.Returning
+ return d
+}
+
+func (d *nopDialect) Init(*sql.DB) {}
+
+func (d *nopDialect) Name() dialect.Name {
+ return dialect.Invalid
+}
+
+func (d *nopDialect) Features() feature.Feature {
+ return d.features
+}
+
+func (d *nopDialect) Tables() *Tables {
+ return d.tables
+}
+
+func (d *nopDialect) OnField(field *Field) {}
+
+func (d *nopDialect) OnTable(table *Table) {}
+
+func (d *nopDialect) IdentQuote() byte {
+ return '"'
+}
+
+func (d *nopDialect) Append(fmter Formatter, b []byte, v interface{}) []byte {
+ return Append(fmter, b, v, nil)
+}
+
+func (d *nopDialect) Appender(typ reflect.Type) AppenderFunc {
+ if v, ok := d.appenderMap.Load(typ); ok {
+ return v.(AppenderFunc)
+ }
+
+ fn := Appender(typ, nil)
+
+ if v, ok := d.appenderMap.LoadOrStore(typ, fn); ok {
+ return v.(AppenderFunc)
+ }
+ return fn
+}
+
+func (d *nopDialect) FieldAppender(field *Field) AppenderFunc {
+ return FieldAppender(d, field)
+}
+
+func (d *nopDialect) Scanner(typ reflect.Type) ScannerFunc {
+ if v, ok := d.scannerMap.Load(typ); ok {
+ return v.(ScannerFunc)
+ }
+
+ fn := Scanner(typ)
+
+ if v, ok := d.scannerMap.LoadOrStore(typ, fn); ok {
+ return v.(ScannerFunc)
+ }
+ return fn
+}