package
0.0.63
Repository: https://github.com/boostgo/lite.git
Documentation: pkg.go.dev

# README

sql

Connect (Single)

const connectionString = "host=localhost port=5432 user=dbuser password=qwerty dbname=testdb sslmode=disable"
conn := sql.MustConnect(connectionString)
defer conn.Close() // or life.Tear(conn.Close)

rows, err := conn.QueryxContext(context.Background(), "SELECT * FROM users")
// ...

Connect (Shard)

connectionStrings := []sql.ShardConnectString{
    {
        Name:             "shard1",
        ConnectionString: "host=localhost port=5432 user=dbuser password=qwerty dbname=testdb sslmode=disable",
    },
    {
        Name:             "shard2",
        ConnectionString: "host=localhost port=5433 user=dbuser password=qwerty dbname=testdb sslmode=disable",
    },
}

connections := sql.MustConnectShards(connectionStrings, func(ctx context.Context, connections []sql.ShardConnect) sql.ShardConnect {
    // select connection by context value by key "shard"
    shard := to.String(ctx.Value("shard"))
    for _, conn := range connections {
        // if connection name equals to context "shard" value, return connection
        if conn.Name() == shard {
            return conn
        }
    }

    return nil
})
defer connections.Close() // or life.Tear(connections.Close)

client := sql.ClientShard(connections)
rows, err := client.QueryxContext(getShardContext("shard1"), "SELECT * FROM users")
// ...