/sqlagent

A golang sql wrap with sqlx and squirrel

Primary LanguageGoMIT LicenseMIT

Sqlagent

License: MIT Build Status Godoc

A golang sql wrap with sqlx and squirrel

Create instance with db config

cfg := dsncfg.Database{
    Host:     "localhost",
    Port:     3306,
    Name:     "test",
    Type:     "mysql",
    User:     "admin",
    Password: "passwd",
}
sa, err := NewSqlAgent(cfg)

Init with config file

$ ls
database.json
$ cat database.json
{
	"host":     "localhost",
	"port":     3306,
	"name":     "dbName",
	"type":     "mysql",
	"user":     "user",
	"password": "passwd"
}
InitFromConfig("database.json")

Init with env variable

  • DB_CONFIG set config file path
  • DB_LABEL set config file name pattern: database-$DB_LABEL.[json|yaml|yml]
$ echo $DB_CONFIG
/etc/database.yaml
$ ls /etc/database.yaml
/etc/database.yaml
$ pwd
/data/apps
$ echo $DB_LABEL
prod
$ ls ./config/database*
./config/database-prod.json
InitFromEnv()

Insert

insertBuilder := InsertBuilder(table).
		Columns("name", "uid").
		Values(userName, uid)
_, err := ExecContext(context.TODO(), insertBuilder)

Delete

delBuilder := DeleteBuilder(table).
    Where("name=?", userName)
res, err = ExecContext(context.TODO(), delBuilder)

Update

updateBuilder := UpdateBuilder(table).Where(sq.Eq{"name": oldUserName}).
        Set("name", userName)
res, err := ExecContext(context.TODO(), updateBuilder)

Select

selectBuilder := SelectBuilder("*").From(table).
    Where(sq.Eq{"name": userName})
userRes := []*tableUser{}
err = SelectContext(context.TODO(), selectBuilder, &userRes)

Use raw sqlx.DB

DB().SetMaxIdleConns(2)
DB().SetMaxOpenConns(4)

License

Sqlagent is released under the MIT License.