Skip to content

Commit e1604d9

Browse files
authored
add support for noop session (northwesternmutual#17)
1 parent 162eaff commit e1604d9

File tree

2 files changed

+39
-7
lines changed

2 files changed

+39
-7
lines changed

manager/model.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,10 @@ type Session interface {
180180

181181
type SessionQuerier interface {
182182
NewSession() Session
183-
WithSession(f func(Session) error) error
183+
NewNoopSession() Session
184+
GetSession(uuid.UUID) Session
185+
WithSession(Session, func(Session) error) error
186+
WithNewSession(f func(Session) error) error
184187
}
185188

186189
// VertexQuerier handles the vertices on the graph.

manager/session.go

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type sessionManager struct {
1515
}
1616

1717
type session struct {
18-
id uuid.UUID
18+
id *uuid.UUID
1919
e executor
2020
}
2121

@@ -28,16 +28,33 @@ func newSessionManager(logger logging.Logger, executor executor) *sessionManager
2828
}
2929
}
3030

31+
func (s *sessionManager) NewNoopSession() Session {
32+
return &session{
33+
e: s.e,
34+
}
35+
}
36+
3137
func (s *sessionManager) NewSession() Session {
38+
id := uuid.New()
39+
return &session{
40+
e: s.e,
41+
id: &id,
42+
}
43+
}
44+
45+
func (s *sessionManager) GetSession(sessionId uuid.UUID) Session {
3246
return &session{
3347
e: s.e,
34-
id: uuid.New(),
48+
id: &sessionId,
3549
}
3650
}
3751

38-
func (s *sessionManager) WithSession(f func(Session) error) error {
52+
func (s *sessionManager) WithNewSession(f func(Session) error) error {
53+
return s.WithSession(s.NewSession(), f)
54+
}
55+
56+
func (s *sessionManager) WithSession(ss Session, f func(Session) error) error {
3957
var err error
40-
ss := s.NewSession()
4158
defer func() {
4259
err2 := ss.Close()
4360
if err == nil { // Capture close error if everything else was ok
@@ -59,19 +76,27 @@ func (s *sessionManager) WithSession(f func(Session) error) error {
5976
}
6077

6178
func (s *session) ExecuteStringQuery(stringQuery string) (res [][]byte, err error) {
62-
return s.e(stringQuery, nil, map[string]string{}, map[string]string{}, &s.id)
79+
return s.e(stringQuery, nil, map[string]string{}, map[string]string{}, s.id)
6380
}
6481

6582
func (s *session) ExecuteQuery(queryObj query.Query) (res [][]byte, err error) {
6683
return s.ExecuteStringQuery(queryObj.String())
6784
}
6885

6986
func (s *session) Close() error {
70-
_, err := s.e("", nil, map[string]string{}, map[string]string{}, &s.id)
87+
if s.id == nil {
88+
return nil
89+
}
90+
91+
_, err := s.e("", nil, map[string]string{}, map[string]string{}, s.id)
7192
return err
7293
}
7394

7495
func (s *session) Commit() error {
96+
if s.id == nil {
97+
return nil
98+
}
99+
75100
commit := traversal.NewTraversal()
76101
commit.AddStep("tx")
77102
commit.AddStep("commit")
@@ -81,6 +106,10 @@ func (s *session) Commit() error {
81106
}
82107

83108
func (s *session) Rollback() error {
109+
if s.id == nil {
110+
return nil
111+
}
112+
84113
rollback := traversal.NewTraversal()
85114
rollback.AddStep("tx")
86115
rollback.AddStep("rollback")

0 commit comments

Comments
 (0)