diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2026-04-14 00:50:20 +0200 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2026-04-14 00:50:20 +0200 |
| commit | d75031ffd1667c330ccc281ea330503eaeaea88a (patch) | |
| tree | 91a22017fbf2d05335f009fadcb146892e235db1 /dialect.go | |
| parent | 9191e018ff90deb99f3881966a5d356a05027e0f (diff) | |
| download | go-oblast-d75031ffd1667c330ccc281ea330503eaeaea88a.tar.gz | |
fold package internal into package oblast
Diffstat (limited to 'dialect.go')
| -rw-r--r-- | dialect.go | 30 |
1 files changed, 27 insertions, 3 deletions
@@ -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 "" } |
