mirror of
https://github.com/turbot/steampipe.git
synced 2025-12-20 10:30:25 -05:00
32 lines
1000 B
Go
32 lines
1000 B
Go
package db_common
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// PgEscapeName escapes strings which will be usaed for Podsdtgres object identifiers
|
|
// (table names, column names, schema names)
|
|
func PgEscapeName(name string) string {
|
|
// first escape all quotes by prefixing an addition quote
|
|
name = strings.Replace(name, `"`, `""`, -1)
|
|
// now wrap the whole string in quotes
|
|
return fmt.Sprintf(`"%s"`, name)
|
|
}
|
|
|
|
// PgEscapeString escapes strings which are to be inserted
|
|
// use a custom escape tag to avoid chance of clash with the escaped text
|
|
// https://medium.com/@lnishada/postgres-dollar-quoting-6d23e4f186ec
|
|
func PgEscapeString(str string) string {
|
|
return fmt.Sprintf(`$steampipe_escape$%s$steampipe_escape$`, str)
|
|
}
|
|
|
|
// PgEscapeSearchPath applies postgres escaping to search path and remove whitespace
|
|
func PgEscapeSearchPath(searchPath []string) []string {
|
|
res := make([]string, len(searchPath))
|
|
for idx, path := range searchPath {
|
|
res[idx] = PgEscapeName(strings.TrimSpace(path))
|
|
}
|
|
return res
|
|
}
|