si is a package designed to help developers (mostly myself) read and write data to various destinations by wrapping standard and non-standard packages. Its main function is to convert between structs and primary types (bytes, strings, etc.), allowing you to skip the encoding and decoding routines.
- file
- tcp
- sql
- http
- websocket (gorilla)
- kafka (sarama)
- elasticsearch (go-elasticsearch)
- ftp (jlaffaye)
go get -u github.com/wonksing/si/v2- sql
connStr := "host=testpghost port=5432 user=test password=test123 dbname=testdb sslmode=disable connect_timeout=60"
driver := "postgres"
db, _ := sql.Open(driver, connStr)
sqldb := sisql.NewSqlDB(db).WithTagKey("si")
type BoolTest struct {
    Nil      string `json:"nil" si:"nil"`
    True_1   bool   `json:"true_1" si:"true_1"`
    True_2   bool   `json:"true_2" si:"true_2"`
    False_1  bool   `json:"false_1" si:"false_1"`
    False_2  bool   `json:"false_2" si:"false_2"`
    Ignore_3 string `si:"-"`
}
query := `
    select null as nil,
        null as true_1, '1' as true_2, 
        0 as false_1, '0' as false_2
    union all
    select null as nil,
        1 as true_1, '1' as true_2,
        0 as false_1, '0' as false_2
`
m := []BoolTest{}
_, err := sqldb.QueryStructs(query, &m)Test flags include the following.
- ONLINE_TEST- Runs tests that actually connect to the storages such as PostgreSQL database.
 
- LONG_TEST- Runs tests that takes long time to complete.
 
Examples of running the tests.
ONLINE_TEST=1 LONG_TEST=1 go test ./...
ONLINE_TEST=1 go test -run SKIP -bench . -benchtime 100x -benchmem- Moved from github.com/go-wonk/si