2013-09-13 16:58:38 -04:00
<!DOCTYPE html> < html lang = "en" > < head > < title > clients/server/base< / title > < / head > < meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" > < meta name = "groc-relative-root" content = "../../" > < meta name = "groc-document-path" content = "clients/server/base" > < meta name = "groc-project-path" content = "clients/server/base.js" > < link rel = "stylesheet" type = "text/css" media = "all" href = "../../assets/style.css" > < script type = "text/javascript" src = "../../assets/behavior.js" > < / script > < body > < div id = "meta" > < div class = "file-path" > clients/server/base.js< / div > < / div > < div id = "document" > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < h2 id = "serverbase" > ServerBase< / h2 > < / div > < / div > < / div > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < p > All of the "when.js" promise components needed in this module.< / p > < / div > < / div > < div class = "code" > < div class = "wrapper" > < span class = "kd" > var< / span > < span class = "nx" > when< / span > < span class = "o" > =< / span > < span class = "nx" > require< / span > < span class = "p" > (< / span > < span class = "s1" > ' when' < / span > < span class = "p" > );< / span >
2013-09-13 13:50:41 -04:00
< span class = "kd" > var< / span > < span class = "nx" > nodefn< / span > < span class = "o" > =< / span > < span class = "nx" > require< / span > < span class = "p" > (< / span > < span class = "s1" > ' when/node/function' < / span > < span class = "p" > );< / span >
< span class = "kd" > var< / span > < span class = "nx" > sequence< / span > < span class = "o" > =< / span > < span class = "nx" > require< / span > < span class = "p" > (< / span > < span class = "s1" > ' when/sequence' < / span > < span class = "p" > );< / span >
< span class = "kd" > var< / span > < span class = "nx" > _< / span > < span class = "o" > =< / span > < span class = "nx" > require< / span > < span class = "p" > (< / span > < span class = "s1" > ' underscore' < / span > < span class = "p" > );< / span >
< span class = "kd" > var< / span > < span class = "nx" > Pool< / span > < span class = "o" > =< / span > < span class = "nx" > require< / span > < span class = "p" > (< / span > < span class = "s1" > ' ../pool' < / span > < span class = "p" > ).< / span > < span class = "nx" > Pool< / span > < span class = "p" > ;< / span >
< span class = "kd" > var< / span > < span class = "nx" > ClientBase< / span > < span class = "o" > =< / span > < span class = "nx" > require< / span > < span class = "p" > (< / span > < span class = "s1" > ' ../base' < / span > < span class = "p" > ).< / span > < span class = "nx" > ClientBase< / span > < span class = "p" > ;< / span >
< span class = "kd" > var< / span > < span class = "nx" > ServerBase< / span > < span class = "o" > =< / span > < span class = "nx" > ClientBase< / span > < span class = "p" > .< / span > < span class = "nx" > extend< / span > < span class = "p" > ({< / span > < / div > < / div > < / div > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < p > Pass a config object into the constructor,
which then initializes the pool and< / p > < / div > < / div > < div class = "code" > < div class = "wrapper" > < span class = "nx" > constructor< / span > < span class = "o" > :< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > config< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nx" > config< / span > < span class = "p" > .< / span > < span class = "nx" > debug< / span > < span class = "p" > )< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > isDebugging< / span > < span class = "o" > =< / span > < span class = "kc" > true< / span > < span class = "p" > ;< / span >
2013-09-17 07:15:18 -04:00
< span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > attachGrammars< / span > < span class = "p" > ();< / span >
2013-09-13 13:50:41 -04:00
< span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > connectionSettings< / span > < span class = "o" > =< / span > < span class = "nx" > config< / span > < span class = "p" > .< / span > < span class = "nx" > connection< / span > < span class = "p" > ;< / span >
< span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > initPool< / span > < span class = "p" > (< / span > < span class = "nx" > config< / span > < span class = "p" > .< / span > < span class = "nx" > pool< / span > < span class = "p" > );< / span >
< span class = "nx" > _< / span > < span class = "p" > .< / span > < span class = "nx" > bindAll< / span > < span class = "p" > (< / span > < span class = "k" > this< / span > < span class = "p" > ,< / span > < span class = "s1" > ' getRawConnection' < / span > < span class = "p" > );< / span >
2013-09-13 16:58:38 -04:00
< span class = "p" > },< / span > < / div > < / div > < / div > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < p > Initialize a pool with the apporpriate configuration and
2013-09-13 13:50:41 -04:00
bind the pool to the current client object.< / p > < / div > < / div > < div class = "code" > < div class = "wrapper" > < span class = "nx" > initPool< / span > < span class = "o" > :< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > poolConfig< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
2013-09-24 09:15:50 -04:00
< span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > pool< / span > < span class = "o" > =< / span > < span class = "k" > new< / span > < span class = "nx" > Pool< / span > < span class = "p" > (< / span > < span class = "nx" > _< / span > < span class = "p" > .< / span > < span class = "nx" > extend< / span > < span class = "p" > ({},< / span > < span class = "nx" > _< / span > < span class = "p" > .< / span > < span class = "nx" > result< / span > < span class = "p" > (< / span > < span class = "k" > this< / span > < span class = "p" > ,< / span > < span class = "s1" > ' poolDefaults' < / span > < span class = "p" > ),< / span > < span class = "nx" > poolConfig< / span > < span class = "p" > ),< / span > < span class = "k" > this< / span > < span class = "p" > );< / span >
2013-09-13 13:50:41 -04:00
< span class = "p" > },< / span > < / div > < / div > < / div > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < p > Execute a query on the specified Builder or QueryBuilder
interface. If a < code > connection< / code > is specified, use it, otherwise
acquire a connection, and then dispose of it when we're done.< / p > < / div > < / div > < div class = "code" > < div class = "wrapper" > < span class = "nx" > query< / span > < span class = "o" > :< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > builder< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "kd" > var< / span > < span class = "nx" > conn< / span > < span class = "p" > ,< / span > < span class = "nx" > client< / span > < span class = "o" > =< / span > < span class = "k" > this< / span > < span class = "p" > ;< / span >
< span class = "kd" > var< / span > < span class = "nx" > sql< / span > < span class = "o" > =< / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > toSql< / span > < span class = "p" > (< / span > < span class = "nx" > builder< / span > < span class = "p" > );< / span >
2013-09-13 16:58:38 -04:00
< span class = "kd" > var< / span > < span class = "nx" > bindings< / span > < span class = "o" > =< / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > getBindings< / span > < span class = "p" > ();< / span >
2013-09-13 13:50:41 -04:00
< span class = "kd" > var< / span > < span class = "nx" > chain< / span > < span class = "o" > =< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > getConnection< / span > < span class = "p" > (< / span > < span class = "nx" > builder< / span > < span class = "p" > ).< / span > < span class = "nx" > then< / span > < span class = "p" > (< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > connection< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
2013-09-22 17:42:53 -04:00
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nx" > client< / span > < span class = "p" > .< / span > < span class = "nx" > isDebugging< / span > < span class = "o" > ||< / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > flags< / span > < span class = "p" > .< / span > < span class = "nx" > debug< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
2013-09-13 13:50:41 -04:00
< span class = "nx" > client< / span > < span class = "p" > .< / span > < span class = "nx" > debug< / span > < span class = "p" > (< / span > < span class = "nx" > sql< / span > < span class = "p" > ,< / span > < span class = "nx" > bindings< / span > < span class = "p" > ,< / span > < span class = "nx" > connection< / span > < span class = "p" > ,< / span > < span class = "nx" > builder< / span > < span class = "p" > );< / span >
< span class = "p" > }< / span >
< span class = "nx" > conn< / span > < span class = "o" > =< / span > < span class = "nx" > connection< / span > < span class = "p" > ;< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nx" > _< / span > < span class = "p" > .< / span > < span class = "nx" > isArray< / span > < span class = "p" > (< / span > < span class = "nx" > sql< / span > < span class = "p" > ))< / span > < span class = "p" > {< / span >
< span class = "k" > return< / span > < span class = "nx" > sequence< / span > < span class = "p" > (< / span > < span class = "nx" > sql< / span > < span class = "p" > .< / span > < span class = "nx" > map< / span > < span class = "p" > (< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > query< / span > < span class = "p" > ,< / span > < span class = "nx" > i< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > currentIndex< / span > < span class = "o" > =< / span > < span class = "nx" > i< / span > < span class = "p" > ;< / span >
< span class = "k" > return< / span > < span class = "kd" > function< / span > < span class = "p" > ()< / span > < span class = "p" > {< / span > < span class = "k" > return< / span > < span class = "nx" > client< / span > < span class = "p" > .< / span > < span class = "nx" > runQuery< / span > < span class = "p" > (< / span > < span class = "nx" > connection< / span > < span class = "p" > ,< / span > < span class = "nx" > query< / span > < span class = "p" > ,< / span > < span class = "nx" > bindings< / span > < span class = "p" > ,< / span > < span class = "nx" > builder< / span > < span class = "p" > );< / span > < span class = "p" > };< / span >
< span class = "p" > }));< / span >
< span class = "p" > }< / span >
< span class = "k" > return< / span > < span class = "nx" > client< / span > < span class = "p" > .< / span > < span class = "nx" > runQuery< / span > < span class = "p" > (< / span > < span class = "nx" > connection< / span > < span class = "p" > ,< / span > < span class = "nx" > sql< / span > < span class = "p" > ,< / span > < span class = "nx" > bindings< / span > < span class = "p" > ,< / span > < span class = "nx" > builder< / span > < span class = "p" > );< / span >
< span class = "p" > });< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "o" > !< / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > usingConnection< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "nx" > chain< / span > < span class = "o" > =< / span > < span class = "nx" > chain< / span > < span class = "p" > .< / span > < span class = "nx" > ensure< / span > < span class = "p" > (< / span > < span class = "kd" > function< / span > < span class = "p" > ()< / span > < span class = "p" > {< / span >
< span class = "nx" > client< / span > < span class = "p" > .< / span > < span class = "nx" > pool< / span > < span class = "p" > .< / span > < span class = "nx" > release< / span > < span class = "p" > (< / span > < span class = "nx" > conn< / span > < span class = "p" > );< / span >
< span class = "p" > });< / span >
< span class = "p" > }< / span >
2013-09-24 09:15:50 -04:00
< span class = "k" > return< / span > < span class = "nx" > chain< / span > < span class = "p" > .< / span > < span class = "nx" > then< / span > < span class = "p" > (< / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > handleResponse< / span > < span class = "p" > ).< / span > < span class = "nx" > otherwise< / span > < span class = "p" > (< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > e< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "kd" > var< / span > < span class = "nx" > err< / span > < span class = "o" > =< / span > < span class = "k" > new< / span > < span class = "nb" > Error< / span > < span class = "p" > (< / span > < span class = "nx" > e< / span > < span class = "p" > .< / span > < span class = "nx" > toString< / span > < span class = "p" > ()< / span > < span class = "o" > +< / span > < span class = "s1" > ' - ' < / span > < span class = "o" > +< / span > < span class = "s1" > ' {sql: ' < / span > < span class = "o" > +< / span > < span class = "nx" > sql< / span > < span class = "o" > +< / span > < span class = "s1" > ' , bindings: ' < / span > < span class = "o" > +< / span > < span class = "nx" > bindings< / span > < span class = "o" > +< / span > < span class = "s1" > ' }' < / span > < span class = "p" > );< / span >
< span class = "nx" > err< / span > < span class = "p" > .< / span > < span class = "nx" > originalStack< / span > < span class = "o" > =< / span > < span class = "nx" > e< / span > < span class = "p" > .< / span > < span class = "nx" > stack< / span > < span class = "p" > ;< / span >
< span class = "k" > throw< / span > < span class = "nx" > err< / span > < span class = "p" > ;< / span >
< span class = "p" > });< / span >
2013-09-13 13:50:41 -04:00
< span class = "p" > },< / span > < / div > < / div > < / div > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < p > Debug a query.< / p > < / div > < / div > < div class = "code" > < div class = "wrapper" > < span class = "nx" > debug< / span > < span class = "o" > :< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > sql< / span > < span class = "p" > ,< / span > < span class = "nx" > bindings< / span > < span class = "p" > ,< / span > < span class = "nx" > connection< / span > < span class = "p" > ,< / span > < span class = "nx" > builder< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "nx" > console< / span > < span class = "p" > .< / span > < span class = "nx" > log< / span > < span class = "p" > ({< / span > < span class = "nx" > sql< / span > < span class = "o" > :< / span > < span class = "nx" > sql< / span > < span class = "p" > ,< / span > < span class = "nx" > bindings< / span > < span class = "o" > :< / span > < span class = "nx" > bindings< / span > < span class = "p" > ,< / span > < span class = "nx" > __cid< / span > < span class = "o" > :< / span > < span class = "nx" > connection< / span > < span class = "p" > .< / span > < span class = "nx" > __cid< / span > < span class = "p" > });< / span >
< span class = "p" > },< / span > < / div > < / div > < / div > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < p > Retrieves a connection from the connection pool,
returning a promise.< / p > < / div > < / div > < div class = "code" > < div class = "wrapper" > < span class = "nx" > getConnection< / span > < span class = "o" > :< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > builder< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nx" > builder< / span > < span class = "o" > & & < / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > usingConnection< / span > < span class = "p" > )< / span > < span class = "k" > return< / span > < span class = "nx" > when< / span > < span class = "p" > (< / span > < span class = "nx" > builder< / span > < span class = "p" > .< / span > < span class = "nx" > usingConnection< / span > < span class = "p" > );< / span >
< span class = "k" > return< / span > < span class = "nx" > nodefn< / span > < span class = "p" > .< / span > < span class = "nx" > call< / span > < span class = "p" > (< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > pool< / span > < span class = "p" > .< / span > < span class = "nx" > acquire< / span > < span class = "p" > );< / span >
< span class = "p" > },< / span > < / div > < / div > < / div > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < p > Releases a connection from the connection pool,
returning a promise.< / p > < / div > < / div > < div class = "code" > < div class = "wrapper" > < span class = "nx" > releaseConnection< / span > < span class = "o" > :< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > conn< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "k" > return< / span > < span class = "nx" > nodefn< / span > < span class = "p" > .< / span > < span class = "nx" > call< / span > < span class = "p" > (< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > pool< / span > < span class = "p" > .< / span > < span class = "nx" > release< / span > < span class = "p" > ,< / span > < span class = "nx" > conn< / span > < span class = "p" > );< / span >
< span class = "p" > },< / span > < / div > < / div > < / div > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < p > Begins a transaction statement on the instance,
resolving with the connection of the current transaction.< / p > < / div > < / div > < div class = "code" > < div class = "wrapper" > < span class = "nx" > startTransaction< / span > < span class = "o" > :< / span > < span class = "kd" > function< / span > < span class = "p" > ()< / span > < span class = "p" > {< / span >
< span class = "k" > return< / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > getConnection< / span > < span class = "p" > ()< / span >
< span class = "p" > .< / span > < span class = "nx" > tap< / span > < span class = "p" > (< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > connection< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "k" > return< / span > < span class = "nx" > nodefn< / span > < span class = "p" > .< / span > < span class = "nx" > call< / span > < span class = "p" > (< / span > < span class = "nx" > connection< / span > < span class = "p" > .< / span > < span class = "nx" > query< / span > < span class = "p" > .< / span > < span class = "nx" > bind< / span > < span class = "p" > (< / span > < span class = "nx" > connection< / span > < span class = "p" > ),< / span > < span class = "s1" > ' begin;' < / span > < span class = "p" > ,< / span > < span class = "p" > []);< / span >
< span class = "p" > });< / span >
< span class = "p" > },< / span > < / div > < / div > < / div > < div class = "segment" > < div class = "comments" > < div class = "wrapper" > < p > Finishes the transaction statement on the instance.< / p > < / div > < / div > < div class = "code" > < div class = "wrapper" > < span class = "nx" > finishTransaction< / span > < span class = "o" > :< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > type< / span > < span class = "p" > ,< / span > < span class = "nx" > transaction< / span > < span class = "p" > ,< / span > < span class = "nx" > msg< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "kd" > var< / span > < span class = "nx" > client< / span > < span class = "o" > =< / span > < span class = "k" > this< / span > < span class = "p" > ;< / span >
< span class = "kd" > var< / span > < span class = "nx" > dfd< / span > < span class = "o" > =< / span > < span class = "nx" > transaction< / span > < span class = "p" > .< / span > < span class = "nx" > dfd< / span > < span class = "p" > ;< / span >
< span class = "nx" > nodefn< / span > < span class = "p" > .< / span > < span class = "nx" > call< / span > < span class = "p" > (< / span > < span class = "nx" > transaction< / span > < span class = "p" > .< / span > < span class = "nx" > connection< / span > < span class = "p" > .< / span > < span class = "nx" > query< / span > < span class = "p" > .< / span > < span class = "nx" > bind< / span > < span class = "p" > (< / span > < span class = "nx" > transaction< / span > < span class = "p" > .< / span > < span class = "nx" > connection< / span > < span class = "p" > ),< / span > < span class = "nx" > type< / span > < span class = "o" > +< / span > < span class = "s1" > ' ;' < / span > < span class = "p" > ,< / span > < span class = "p" > []).< / span > < span class = "nx" > then< / span > < span class = "p" > (< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > resp< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nx" > type< / span > < span class = "o" > ===< / span > < span class = "s1" > ' commit' < / span > < span class = "p" > )< / span > < span class = "nx" > dfd< / span > < span class = "p" > .< / span > < span class = "nx" > resolve< / span > < span class = "p" > (< / span > < span class = "nx" > msg< / span > < span class = "o" > ||< / span > < span class = "nx" > resp< / span > < span class = "p" > );< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nx" > type< / span > < span class = "o" > ===< / span > < span class = "s1" > ' rollback' < / span > < span class = "p" > )< / span > < span class = "nx" > dfd< / span > < span class = "p" > .< / span > < span class = "nx" > reject< / span > < span class = "p" > (< / span > < span class = "nx" > msg< / span > < span class = "o" > ||< / span > < span class = "nx" > resp< / span > < span class = "p" > );< / span >
< span class = "p" > },< / span > < span class = "kd" > function< / span > < span class = "p" > (< / span > < span class = "nx" > err< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "nx" > dfd< / span > < span class = "p" > .< / span > < span class = "nx" > reject< / span > < span class = "p" > (< / span > < span class = "nx" > err< / span > < span class = "p" > );< / span >
< span class = "p" > }).< / span > < span class = "nx" > ensure< / span > < span class = "p" > (< / span > < span class = "kd" > function< / span > < span class = "p" > ()< / span > < span class = "p" > {< / span >
< span class = "k" > return< / span > < span class = "nx" > client< / span > < span class = "p" > .< / span > < span class = "nx" > releaseConnection< / span > < span class = "p" > (< / span > < span class = "nx" > transaction< / span > < span class = "p" > .< / span > < span class = "nx" > connection< / span > < span class = "p" > ).< / span > < span class = "nx" > tap< / span > < span class = "p" > (< / span > < span class = "kd" > function< / span > < span class = "p" > ()< / span > < span class = "p" > {< / span >
< span class = "nx" > transaction< / span > < span class = "p" > .< / span > < span class = "nx" > connection< / span > < span class = "o" > =< / span > < span class = "kc" > null< / span > < span class = "p" > ;< / span >
< span class = "p" > });< / span >
< span class = "p" > });< / span >
< span class = "p" > }< / span >
< span class = "p" > });< / span >
< span class = "nx" > exports< / span > < span class = "p" > .< / span > < span class = "nx" > ServerBase< / span > < span class = "o" > =< / span > < span class = "nx" > ServerBase< / span > < span class = "p" > ;< / span > < / div > < / div > < / div > < / div > < / body > < / html >