Skip to content

Commit e9a3384

Browse files
committed
[db] hooks for db operations
1 parent 18ee0ad commit e9a3384

File tree

1 file changed

+50
-2
lines changed

1 file changed

+50
-2
lines changed

plugins/pluginManager.js

+50-2
Original file line numberDiff line numberDiff line change
@@ -1096,6 +1096,7 @@ var pluginManager = function pluginManager() {
10961096
**/
10971097
this.dbConnection = function(config) {
10981098
var db, maxPoolSize = 10;
1099+
var mngr = this;
10991100

11001101
if (!cluster.isMaster) {
11011102
//we are in worker
@@ -1189,11 +1190,17 @@ var pluginManager = function pluginManager() {
11891190
//silent
11901191
}
11911192

1193+
mngr.dispatch("/db/pre_connect", {
1194+
connection: dbName,
1195+
options: dbOptions
1196+
});
1197+
11921198
var countlyDb = mongo.db(dbName, dbOptions);
11931199
countlyDb._cly_debug = {
1194-
db: dbName,
1200+
connection: dbName,
11951201
options: dbOptions
11961202
};
1203+
11971204
logDbRead.d("New connection %j", countlyDb._cly_debug);
11981205
countlyDb._emitter.setMaxListeners(0);
11991206
if (!countlyDb.ObjectID) {
@@ -1226,6 +1233,14 @@ var pluginManager = function pluginManager() {
12261233
}
12271234
};
12281235

1236+
countlyDb.onOpened(function() {
1237+
mngr.dispatch("/db/connected", {
1238+
db: countlyDb,
1239+
connection: dbName,
1240+
options: dbOptions
1241+
});
1242+
});
1243+
12291244
countlyDb.admin().buildInfo({}, (err, result) => {
12301245
if (!err && result) {
12311246
countlyDb.build = result;
@@ -1313,6 +1328,14 @@ var pluginManager = function pluginManager() {
13131328

13141329
ob._findAndModify = ob.findAndModify;
13151330
ob.findAndModify = function(query, sort, doc, options, callback) {
1331+
mngr.dispatch("/db/readAndUpdate", {
1332+
operation: "findAndModify",
1333+
collection: collection,
1334+
query: query,
1335+
sort: sort,
1336+
update: doc,
1337+
options: typeof options === "function" ? {} : options
1338+
});
13161339
var e;
13171340
var args = arguments;
13181341
var at = "";
@@ -1348,6 +1371,13 @@ var pluginManager = function pluginManager() {
13481371
var overwriteRetryWrite = function(obj, name) {
13491372
obj["_" + name] = obj[name];
13501373
obj[name] = function(selector, doc, options, callback) {
1374+
mngr.dispatch("/db/update", {
1375+
operation: name,
1376+
collection: collection,
1377+
query: selector,
1378+
update: doc,
1379+
options: typeof options === "function" ? {} : options
1380+
});
13511381
var args = arguments;
13521382
var e;
13531383
var at = "";
@@ -1427,6 +1457,12 @@ var pluginManager = function pluginManager() {
14271457
var overwriteDefaultWrite = function(obj, name) {
14281458
obj["_" + name] = obj[name];
14291459
obj[name] = function(selector, options, callback) {
1460+
mngr.dispatch("/db/write", {
1461+
operation: name,
1462+
collection: collection,
1463+
query: selector,
1464+
options: typeof options === "function" ? {} : options
1465+
});
14301466
var e;
14311467
var at = "";
14321468
if (log.getLevel("db") === "debug" || log.getLevel("db") === "info") {
@@ -1488,6 +1524,12 @@ var pluginManager = function pluginManager() {
14881524
var overwriteDefaultRead = function(obj, name) {
14891525
obj["_" + name] = obj[name];
14901526
obj[name] = function(query, options, callback) {
1527+
mngr.dispatch("/db/read", {
1528+
operation: name,
1529+
collection: collection,
1530+
query: query,
1531+
options: typeof options === "function" ? {} : options
1532+
});
14911533
var e;
14921534
var at = "";
14931535
if (log.getLevel("db") === "debug" || log.getLevel("db") === "info") {
@@ -1532,10 +1574,16 @@ var pluginManager = function pluginManager() {
15321574
options.projection = options.fields;
15331575
delete options.fields;
15341576
}
1535-
else {
1577+
else if (Object.keys(options).length) {
15361578
options = {projection: options};
15371579
}
15381580
}
1581+
mngr.dispatch("/db/read", {
1582+
operation: "find",
1583+
collection: collection,
1584+
query: query,
1585+
options: options || {}
1586+
});
15391587
if (log.getLevel("db") === "debug" || log.getLevel("db") === "info") {
15401588
e = new Error();
15411589
at += e.stack.replace(/\r\n|\r|\n/g, "\n").split("\n")[2];

0 commit comments

Comments
 (0)