https://github.com/dutchcoders/dbwrapper
Golang database wrapper.
https://github.com/dutchcoders/dbwrapper
Last synced: 8 months ago
JSON representation
Golang database wrapper.
- Host: GitHub
- URL: https://github.com/dutchcoders/dbwrapper
- Owner: dutchcoders
- License: mit
- Created: 2015-01-14T16:24:42.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2015-03-02T11:22:34.000Z (almost 11 years ago)
- Last Synced: 2025-03-25T12:12:58.263Z (9 months ago)
- Language: Go
- Size: 164 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dbwrapper
Basic Golang database wrapper.
## Examples
Simple query
```
db, err := dbwrapper.Open("mysql", config.DSN)
if err != nil {
panic(err.Error())
}
qwy := "SELECT body, date FROM comments WHERE objectid=? AND active=1 ORDER BY date DESC"
err = db.WithStmt(qry, func(stmt *dbwrapper.Stmt) error {
err = stmt.Query(func(rows *sql.Rows) error {
var comment comment
if err := rows.Scan(&comment.Body, &comment.Date); err != nil {
return err
}
response.Comments = append(response.Comments, comment)
return nil
}, response.ObjectId)
return nil
})
if err != nil {
log.Println(err)
return
}
```
Simple query with (nested) object
```
db, err := dbwrapper.Open("mysql", config.DSN)
if err != nil {
panic(err.Error())
}
type Comment struct {
Body string `sql:"body"`
Date *time.Time `sql:"date"`
User struct {
Name string `sql:"user_name"`
}
}
comments := []Comment{}
qry := "SELECT body, date, u.name as user_name FROM comments c INNER JOIN users u ON c.userid=u.userid"
err = db.WithStmt(qry, func(stmt *Stmt) error {
err = stmt.Query(func(rows *Rows) error {
var comment Comment
if err := rows.Scan(&comment.Body, &comment.Date, &comment.User.Name); err != nil {
return err
}
comments = append(comments, comment)
return nil
})
return err
})
if err != nil {
log.Println(err)
return
}
```
Transaction, will rollback when an error is being returned.
```
db, err := dbwrapper.Open("mysql", config.DSN)
if err != nil {
panic(err.Error())
}
err = db.WithTx(func(tx *dbwrapper.Tx) {
qry := "INSERT INTO sessions (clientid, sensor, username, password, date, remote_addr, server_addr, cast, start_date, end_date) VALUES (1, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
err = tx.WithStmt(qry, func(stmt *Stmt) error {
_, err = stmt.Exec(session.Sensor, session.Username, session.Password, time.Now(), addr.String(), c.Request.RemoteAddr, session.Cast, session.StartDate, session.EndDate)
return err
})
if err != nil {
return err
}
})
```
## Contributions
Contributions are welcome.
## Creators
**Remco Verhoef**
-
-
## Copyright and license
Code and documentation copyright 2011-2014 Remco Verhoef.
Code released under [the MIT license](LICENSE).