Skip to content

Repository files navigation

dbresolver

dbresolver is sqlx resolver and wrapper for database cluster.

CIGo Reference

Install

go get github.com/proost/dbresolver

Usage

package main
import (
"context""fmt""log""github.com/jmoiron/sqlx""github.com/proost/dbresolver"
)
funcmain() {
var (
primaryHost="localhost"primaryPort=3306primaryUser="primary"primaryPassword="<password>"secondaryHost="localhost"secondaryPort=3307secondaryUser="secondary"secondaryPassword="<password>"dbname="<dbname>"
)
// DSNsprimaryDSN:=fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s",
primaryUser,
primaryPassword,
primaryHost,
primaryPort,
dbname,
)
secondaryDSN:=fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s",
secondaryUser,
secondaryPassword,
secondaryHost,
secondaryPort,
dbname,
)
// connect to primaryprimaryDB:=sqlx.MustOpen("mysql", primaryDSN)
// connect to secondarysecondaryDB:=sqlx.MustOpen("mysql", secondaryDSN)
primaryDBsCfg:=&dbresolver.PrimaryDBsConfig{
DBs: []*sqlx.DB{primaryDB},
ReadWritePolicy: dbresolver.ReadWrite,
}
resolver:=dbresolver.MustNewDBResolver(primaryDBsCfg, dbresolver.WithSecondaryDBs(secondaryDB))
deferresolver.Close()
resolver.MustExecContext(context.Background(), "INSERT INTO users (name) VALUES (?)", "foo")
result, err:=resolver.QueryxContext(context.Background(), `SELECT * FROM users WHERE name = "foo"`)
iferr!=nil {
log.Panic(err)
}
fmt.Println(result)
}

Important Notes

  • Primary Database will be used when you call these functions
    • Begin
    • BeginTx
    • BeginTxx
    • Beginx
    • Conn
    • Connx
    • Exec
    • ExecContext
    • MustBegin
    • MustBeginTx
    • MustExec
    • MustExecContext
    • NamedExec
    • NamedExecContext
  • Readable Database(Secondary Database or Primary Database depending on configuration) will be used when you call these functions
    • Get
    • GetContext
    • NamedQuery
    • NamedQueryContext
    • Query
    • QueryContext
    • QueryRow
    • QueryRowContext
    • QueryRowx
    • QueryRowxContext
    • Select
    • SelectContext

Contribution

To contribute to this project, you can open a PR or an issue.

About

The sqlx resolver and wrapper for database cluster

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages