/
revelmgo.go
67 lines (53 loc) · 1.13 KB
/
revelmgo.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package revelmgo
import (
"fmt"
"github.com/robfig/revel"
"labix.org/v2/mgo"
)
var (
Session *mgo.Session
Url string
)
func Init() {
var found bool
if Url, found = revel.Config.String("mgo.url"); !found {
revel.ERROR.Panic("No mgo.url found")
}
revel.INFO.Println(fmt.Sprintf("Dialing url: %s", Url))
var err error
if Session, err = mgo.Dial(Url); err != nil {
revel.ERROR.Panic(err)
}
}
type MgoController struct {
*revel.Controller
MgoSession *mgo.Session
}
func New() {
revel.InterceptMethod((*MgoController).new, revel.BEFORE)
}
func Copy() {
revel.InterceptMethod((*MgoController).copy, revel.BEFORE)
}
func Clone() {
revel.InterceptMethod((*MgoController).clone, revel.BEFORE)
}
func (c *MgoController) new() revel.Result {
c.MgoSession = Session.New()
return nil
}
func (c *MgoController) copy() revel.Result {
c.MgoSession = Session.Copy()
return nil
}
func (c *MgoController) clone() revel.Result {
c.MgoSession = Session.Clone()
return nil
}
func (c *MgoController) close() revel.Result {
c.MgoSession.Close()
return nil
}
func init() {
revel.InterceptMethod((*MgoController).close, revel.FINALLY)
}