forked from grncdr/node-any-db
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
40 lines (35 loc) · 1.15 KB
/
index.js
File metadata and controls
40 lines (35 loc) · 1.15 KB
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
var url = require('url')
var ConnectionPool = require('any-db-pool')
var Transaction = require('./lib/transaction')
exports.adapters = require('./lib/adapters');
exports.createConnection = function connect (dbUrl, callback) {
var parsed = parseDbUrl(dbUrl)
return getAdapter(parsed.protocol).createConnection(parsed, callback)
}
exports.createPool = function getPool (dbUrl, opts) {
opts = opts || {}
if (opts.create || opts.destroy) {
throw new Error("Cannot override the create/destroy pool options. Try onCreate/reset instead.")
}
var parsed = parseDbUrl(dbUrl);
var adapter = getAdapter(parsed.protocol);
var pool = new ConnectionPool(adapter, parsed, opts || {})
pool.begin = Transaction.createPoolBeginMethod(adapter.createQuery)
return pool
}
function parseDbUrl (dbUrl) {
var parsed = url.parse(dbUrl, true);
if (parsed.auth) {
var auth = parsed.auth.split(':')
parsed.user = auth[0];
parsed.password = auth[1];
}
return parsed;
}
function getAdapter (protocol) {
var name = protocol.replace(':', '').split('+').shift()
if (!exports.adapters[name]) {
throw new Error("Unknown database driver: " + name)
}
return exports.adapters[name]
}