Mercurial > gemma
diff pkg/controllers/json.go @ 486:b2dc9c2f69e0 metamorph-for-all
First stab to use the metamorphic db to do all database stuff.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 24 Aug 2018 13:56:06 +0200 |
parents | c1047fd04a3a |
children | 8a0737aa6ab6 |
line wrap: on
line diff
--- a/pkg/controllers/json.go Fri Aug 24 12:14:56 2018 +0200 +++ b/pkg/controllers/json.go Fri Aug 24 13:56:06 2018 +0200 @@ -19,7 +19,8 @@ type JSONHandler struct { Input func() interface{} - Handle func(interface{}, *http.Request, *sql.DB) (JSONResult, error) + Handle func(interface{}, *http.Request, *sql.Conn) (JSONResult, error) + NoConn bool } type JSONError struct { @@ -46,11 +47,15 @@ var jr JSONResult var err error - if token, ok := auth.GetToken(req); ok { - err = auth.ConnPool.Do(token, func(db *sql.DB) (err error) { - jr, err = j.Handle(input, req, db) - return err - }) + if token, ok := auth.GetToken(req); ok && !j.NoConn { + var session *auth.Session + if session, err = auth.ConnPool.Do(token); err != nil { + var conn *sql.Conn + if conn, err = auth.MetamorphConn(req.Context(), session.User); err != nil { + defer conn.Close() + jr, err = j.Handle(input, req, conn) + } + } } else { jr, err = j.Handle(input, req, nil) }