@@ -15,7 +15,7 @@ type sessionManager struct {
1515}
1616
1717type 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+
3137func (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
6178func (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
6582func (s * session ) ExecuteQuery (queryObj query.Query ) (res [][]byte , err error ) {
6683 return s .ExecuteStringQuery (queryObj .String ())
6784}
6885
6986func (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
7495func (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
83108func (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