mirror of https://github.com/aldy505/bob.git
docs: decent example
This commit is contained in:
parent
8d6de642b2
commit
80893d1fdf
43
README.md
43
README.md
|
@ -8,12 +8,40 @@ Oh, and of course, heavily inspired by Bob the Builder.
|
|||
|
||||
## Usage
|
||||
|
||||
It's not ready for production (yet). But, the API is probably close to how you'd do things on Squirrel.
|
||||
It's not ready for production yet. But, the API is probably close to how you'd do things on Squirrel. This is an example for using with pgx.
|
||||
|
||||
```go
|
||||
import "github.com/aldy505/bob"
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"github.com/aldy505/bob"
|
||||
"github.com/jackc/pgx/v4"
|
||||
)
|
||||
|
||||
func main() {
|
||||
db := pgx.Connect()
|
||||
|
||||
// Check if a table is exists
|
||||
sql, args, err = bob.HasTable("users").PlaceholderFormat(bob.Dollar).ToSQL()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var hasTableUsers bool
|
||||
err = db.QueryRow(context.Background(), sql, args...).Scan(&hasTableUsers)
|
||||
if err != nil {
|
||||
if err.Error() == "no rows in result set" {
|
||||
hasTableUsers = false
|
||||
} else {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
if !hasTableUsers {
|
||||
// Create "users" table
|
||||
// Note that this will return multiple query in a single string.
|
||||
sql, _, err := bob.CreateTable("users").
|
||||
Columns("id", "email", "name", "password", "date").
|
||||
Types("varchar(36)", "varchar(255)", "varchar(255)", "text", "date").
|
||||
|
@ -24,6 +52,15 @@ func main() {
|
|||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// process SQL with whatever you like it
|
||||
// If you don't do this, you will get the error:
|
||||
// ERROR: cannot insert multiple commands into a prepared statement (SQLSTATE 42601)
|
||||
splitQuery := strings.Split(sql, ";")
|
||||
for i := range splitQuery {
|
||||
_, err = db.Query(context.Background(), splitQuery[i])
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
Loading…
Reference in New Issue