aboutsummaryrefslogtreecommitdiff
path: root/dialect.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2026-04-14 00:50:20 +0200
committerStefan Majewsky <majewsky@gmx.net>2026-04-14 00:50:20 +0200
commitd75031ffd1667c330ccc281ea330503eaeaea88a (patch)
tree91a22017fbf2d05335f009fadcb146892e235db1 /dialect.go
parent9191e018ff90deb99f3881966a5d356a05027e0f (diff)
downloadgo-oblast-d75031ffd1667c330ccc281ea330503eaeaea88a.tar.gz
fold package internal into package oblast
Diffstat (limited to 'dialect.go')
-rw-r--r--dialect.go30
1 files changed, 27 insertions, 3 deletions
diff --git a/dialect.go b/dialect.go
index acbb160..a2827e2 100644
--- a/dialect.go
+++ b/dialect.go
@@ -3,7 +3,10 @@
package oblast
-import "go.xyrillian.de/oblast/internal"
+import (
+ "strconv"
+ "strings"
+)
// Dialect accounts for differences between different SQL dialects
// that are relevant to query generation within Oblast.
@@ -38,10 +41,31 @@ type Dialect interface {
// PostgresDialect is the dialect of PostgreSQL databases.
func PostgresDialect() Dialect {
- return internal.PostgresDialect{}
+ return postgresDialect{}
+}
+
+type postgresDialect struct{}
+
+func (postgresDialect) Placeholder(i int) string { return "$" + strconv.Itoa(i+1) }
+func (postgresDialect) QuoteIdentifier(name string) string { return `"` + name + `"` }
+func (postgresDialect) UsesLastInsertID() bool { return false }
+
+func (p postgresDialect) InsertSuffixForAutoColumns(columns []string) string {
+ quotedColumns := make([]string, len(columns))
+ for idx, name := range columns {
+ quotedColumns[idx] = p.QuoteIdentifier(name)
+ }
+ return ` RETURNING ` + strings.Join(quotedColumns, ", ")
}
// SqliteDialect is the dialect of SQLite databases.
func SqliteDialect() Dialect {
- return internal.SqliteDialect{}
+ return sqliteDialect{}
}
+
+type sqliteDialect struct{}
+
+func (sqliteDialect) Placeholder(_ int) string { return "?" }
+func (sqliteDialect) QuoteIdentifier(name string) string { return `"` + name + `"` }
+func (sqliteDialect) UsesLastInsertID() bool { return true }
+func (sqliteDialect) InsertSuffixForAutoColumns(columns []string) string { return "" }