Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ChineseSortSql ¶ added in v0.1.26
func ChineseSortSql(para *dto.PageParameter) string
ChineseSortSql builds an ORDER BY clause that approximates pinyin ordering for a Chinese-text column, using PostgreSQL's convert_to to re-encode the column before comparing byte order — GBK/GB18030 codepoints are assigned roughly in pinyin order for common Han characters, so sorting the converted bytes approximates a pinyin sort. para.Charset selects the target encoding (e.g. "GBK", "GB18030"); it defaults to "GBK" when empty.
This is PostgreSQL-specific: convert_to does not exist on MySQL, SQLite, or ClickHouse. dbsqlx.SortSql deliberately does not offer this — see its doc comment for why.
para.Sort and the resolved charset are validated with the same identifier-safety rules dbsqlx.SortSql itself uses; if either is unsafe, ChineseSortSql falls back to dbsqlx.SortSql's plain "ORDER BY <column> <direction>" behaviour instead (which also handles defaulting Sort to "id" and Direction to "ASC").
Example ¶
ExampleChineseSortSql shows how to build an ORDER BY clause that approximates pinyin ordering for a Chinese-text column, then append it directly to a raw SELECT statement alongside dbsqlx.PageSql for pagination. This is PostgreSQL-specific — see ChineseSortSql's doc comment for why.
package main
import (
"fmt"
"github.com/phcp-tech/common-library-golang/dbsqlx/postgres"
"github.com/phcp-tech/common-library-golang/dto"
)
func main() {
para := dto.PageParameter{Sort: "name", Direction: "ASC"}
query := "SELECT * FROM products" + postgres.ChineseSortSql(¶)
fmt.Println(query)
}
Output: SELECT * FROM products ORDER BY convert_to(name,'GBK') ASC
func DSN ¶
DSN builds a libpq-style connection string from conf.
Example ¶
ExampleDSN shows how to build a libpq-style connection string, including an optional search_path.
package main
import (
"fmt"
"github.com/phcp-tech/common-library-golang/dbsqlx/postgres"
)
func main() {
dsn, err := postgres.DSN(&postgres.Config{
Host: "localhost",
Port: "5432",
Database: "mydb",
Username: "user",
Password: "pass",
SearchPath: "myschema",
})
fmt.Println(err == nil)
fmt.Println(dsn)
}
Output: true host=localhost port=5432 user=user password=pass dbname=mydb sslmode=disable TimeZone=UTC search_path=myschema
func InitDefault ¶
InitDefault opens PostgreSQL and stores it as the dbsqlx default database.
Example ¶
ExampleInitDefault shows the default-instance pattern. Call InitDefault once at application startup; dbsqlx.Default() returns the shared *sqlx.DB for the process.
package main
import (
"fmt"
"github.com/phcp-tech/common-library-golang/dbsqlx/postgres"
)
func main() {
err := postgres.InitDefault(&postgres.Config{
Host: "127.0.0.1",
Port: "1",
Database: "mydb",
Username: "user",
Password: "pass",
})
fmt.Println(err != nil) // true — server unreachable
}
Output:
func NewPostgres ¶
NewPostgres opens a PostgreSQL-backed *sqlx.DB via the pgx stdlib driver. Open verifies connectivity with an eager ping — a non-nil error is returned immediately when the database is unreachable.
Example ¶
ExampleNewPostgres shows how to open a PostgreSQL-backed *sqlx.DB. Open verifies connectivity with an eager ping and runs SHOW search_path — a non-nil error is returned immediately when the server is unreachable.
package main
import (
"fmt"
"github.com/phcp-tech/common-library-golang/dbsqlx/postgres"
)
func main() {
_, err := postgres.NewPostgres(&postgres.Config{
Host: "127.0.0.1",
Port: "1",
Database: "mydb",
Username: "user",
Password: "pass",
})
fmt.Println(err != nil) // true — server unreachable, Open pings eagerly
}
Output: true
Types ¶
type Config ¶
type Config struct {
// Required connection settings.
Host string
Port string
Database string
Username string
Password string
SearchPath string
// Pool tuning; zero values fall back to dbsqlx package defaults.
MaxOpenConns int
MaxIdleConns int
ConnMaxLifetime int
ConnMaxIdletime int
}
Config contains PostgreSQL connection settings.