Advertisement
Guest User

Untitled

a guest
May 23rd, 2016
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. package controllers
  2.  
  3. import (
  4. "database/sql"
  5. "fmt"
  6. "github.com/jmoiron/sqlx"
  7. _ "github.com/lib/pq"
  8. "github.com/revel/revel"
  9. )
  10.  
  11. var (
  12. Db *sqlx.DB
  13. )
  14.  
  15. func InitDB() {
  16. connstring := fmt.Sprintf("user=%s password='%s' dbname=%s sslmode=disable", "postgres", "postgres", "db_name")
  17.  
  18. var err error
  19. Db, err = sqlx.Connect("postgres", connstring)
  20. if err != nil {
  21. revel.INFO.Println("DB Error", err)
  22. }
  23.  
  24. revel.INFO.Println("DB Connected")
  25. }
  26.  
  27. type SqlxController struct {
  28. *revel.Controller
  29. Tx *sqlx.Tx
  30. }
  31.  
  32. func (c *SqlxController) Begin() revel.Result {
  33. tx, err := Db.Beginx()
  34. if err != nil {
  35. panic(err)
  36. }
  37. c.Tx = tx
  38. return nil
  39. }
  40.  
  41. func (c *SqlxController) Commit() revel.Result {
  42. if c.Tx == nil {
  43. return nil
  44. }
  45. if err := c.Tx.Commit(); err != nil && err != sql.ErrTxDone {
  46. panic(err)
  47. }
  48. c.Tx = nil
  49. return nil
  50. }
  51.  
  52. func (c *SqlxController) Rollback() revel.Result {
  53. if c.Tx == nil {
  54. return nil
  55. }
  56. if err := c.Tx.Rollback(); err != nil && err != sql.ErrTxDone {
  57. panic(err)
  58. }
  59. c.Tx = nil
  60. return nil
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement