You've already forked go-sqlmock
mirror of
https://github.com/DATA-DOG/go-sqlmock.git
synced 2025-06-19 00:07:38 +02:00
examples
basic
basic.go
basic_test.go
blog
orders
doc.go
.gitignore
.travis.yml
LICENSE
README.md
argument.go
argument_test.go
driver.go
driver_test.go
expectations.go
expectations_before_go18.go
expectations_go18.go
expectations_go18_test.go
expectations_test.go
result.go
result_test.go
rows.go
rows_go18.go
rows_go18_test.go
rows_test.go
sqlmock.go
sqlmock_go18.go
sqlmock_go18_test.go
sqlmock_test.go
statement.go
statement_test.go
stubs_test.go
util.go
util_test.go
41 lines
760 B
Go
41 lines
760 B
Go
package main
|
|
|
|
import "database/sql"
|
|
|
|
func recordStats(db *sql.DB, userID, productID int64) (err error) {
|
|
tx, err := db.Begin()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
defer func() {
|
|
switch err {
|
|
case nil:
|
|
err = tx.Commit()
|
|
default:
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
if _, err = tx.Exec("UPDATE products SET views = views + 1"); err != nil {
|
|
return
|
|
}
|
|
if _, err = tx.Exec("INSERT INTO product_viewers (user_id, product_id) VALUES (?, ?)", userID, productID); err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func main() {
|
|
// @NOTE: the real connection is not required for tests
|
|
db, err := sql.Open("mysql", "root@/blog")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer db.Close()
|
|
|
|
if err = recordStats(db, 1 /*some user id*/, 5 /*some product id*/); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|