mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2026-01-06 11:54:25 +00:00
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package database
|
|
|
|
import (
|
|
"database/sql"
|
|
"strings"
|
|
|
|
"github.com/uptrace/bun/dialect/mssqldialect"
|
|
"github.com/uptrace/bun/dialect/pgdialect"
|
|
"github.com/uptrace/bun/dialect/sqlitedialect"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/driver/sqlserver"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// parseTableName splits a table name that may contain schema into separate schema and table
|
|
// For example: "public.users" -> ("public", "users")
|
|
//
|
|
// "users" -> ("", "users")
|
|
func parseTableName(fullTableName string) (schema, table string) {
|
|
if idx := strings.LastIndex(fullTableName, "."); idx != -1 {
|
|
return fullTableName[:idx], fullTableName[idx+1:]
|
|
}
|
|
return "", fullTableName
|
|
}
|
|
|
|
// GetPostgresDialect returns a Bun PostgreSQL dialect
|
|
func GetPostgresDialect() *pgdialect.Dialect {
|
|
return pgdialect.New()
|
|
}
|
|
|
|
// GetSQLiteDialect returns a Bun SQLite dialect
|
|
func GetSQLiteDialect() *sqlitedialect.Dialect {
|
|
return sqlitedialect.New()
|
|
}
|
|
|
|
// GetMSSQLDialect returns a Bun MSSQL dialect
|
|
func GetMSSQLDialect() *mssqldialect.Dialect {
|
|
return mssqldialect.New()
|
|
}
|
|
|
|
// GetPostgresDialector returns a GORM PostgreSQL dialector
|
|
func GetPostgresDialector(db *sql.DB) gorm.Dialector {
|
|
return postgres.New(postgres.Config{
|
|
Conn: db,
|
|
})
|
|
}
|
|
|
|
// GetSQLiteDialector returns a GORM SQLite dialector
|
|
func GetSQLiteDialector(db *sql.DB) gorm.Dialector {
|
|
return sqlite.Dialector{
|
|
Conn: db,
|
|
}
|
|
}
|
|
|
|
// GetMSSQLDialector returns a GORM MSSQL dialector
|
|
func GetMSSQLDialector(db *sql.DB) gorm.Dialector {
|
|
return sqlserver.New(sqlserver.Config{
|
|
Conn: db,
|
|
})
|
|
}
|