ts-cache-mongoose 0.0.6 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ts-cache-mongoose
2
2
 
3
- Cache queries in mongoose using memory or redis
3
+ Cache query and aggregate in mongoose using in-memory or redis
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/ts-cache-mongoose)](https://www.npmjs.com/package/ts-cache-mongoose)
6
6
  [![npm](https://img.shields.io/npm/dt/ts-cache-mongoose)](https://www.npmjs.com/package/ts-cache-mongoose)
@@ -20,25 +20,31 @@ Cache queries in mongoose using memory or redis
20
20
  ts-cache-mongoose is a plugin for mongoose
21
21
  \
22
22
  Caching queries is a good way to improve performance of your application
23
- \
24
- ⚠️ This is initial prerelease of the plugin, so it may contain bugs
25
- \
26
- 🛠️ Work in progress...
23
+
24
+ ## Supports and tested with
25
+
26
+ ```json
27
+ {
28
+ "node": "16.x || 18.x || 20.x",
29
+ "mongoose": ">=6.6.x || 7.x",
30
+ }
31
+ ```
27
32
 
28
33
  ## Features
29
34
 
30
- - [x] Memory caching
35
+ - [x] In-memory caching
31
36
  - [x] Redis caching
32
37
  - [x] Cache expiration
33
38
  - [x] Cache invalidation
34
39
  - [x] Cache key generation
35
40
  - [x] Cache key prefix
36
- - [x] Query caching support
37
- - [x] Aggregate caching support
38
- - [ ] More tests
41
+ - [x] Query caching
42
+ - [x] Aggregate caching
39
43
 
40
44
  ## Installation
41
45
 
46
+ - Locally inside your project
47
+
42
48
  ```bash
43
49
  npm install ts-cache-mongoose
44
50
  yard add ts-cache-mongoose
@@ -55,14 +61,14 @@ npm install mongoose@latest
55
61
  yarn add mongoose@latest
56
62
  ```
57
63
 
58
- ## Usage
64
+ ## Example
59
65
 
60
66
  ```typescript
61
67
  // On your application startup
62
68
  import mongoose from 'mongoose'
63
69
  import cache from 'ts-cache-mongoose'
64
70
 
65
- // In memory example
71
+ // In-memory example
66
72
  const cache = cache.init(mongoose, {
67
73
  engine: 'memory',
68
74
  })
@@ -79,6 +85,32 @@ const cache = cache.init(mongoose, {
79
85
  mongoose.connect('mongodb://localhost:27017/my-database')
80
86
 
81
87
  // Somewhere in your code
82
- const User = await User.findById(user._id).cache('1 minute').exec()
83
- const Book = await Book.findById(user._id).cache('30 seconds').exec()
88
+ const users = await User.find({ role: 'user' }).cache('10 seconds').exec()
89
+ // Cache hit
90
+ const users = await User.find({ role: 'user' }).cache('10 seconds').exec()
91
+
92
+ const book = await Book.findById(id).cache('1 hour').exec()
93
+ const bookCount = await Book.countDocuments().cache('1 minute').exec()
94
+ const authors = await Book.distinct('author').cache('30 seconds').exec()
95
+
96
+ const books = await Book.aggregate([
97
+ {
98
+ $match: {
99
+ genre: 'fantasy',
100
+ },
101
+ },
102
+ {
103
+ $group: {
104
+ _id: '$author',
105
+ count: { $sum: 1 },
106
+ },
107
+ },
108
+ {
109
+ $project: {
110
+ _id: 0,
111
+ author: '$_id',
112
+ count: 1,
113
+ },
114
+ }
115
+ ]).cache('1 minute').exec()
84
116
  ```
@@ -22,20 +22,20 @@ class CacheEngine {
22
22
  }
23
23
  }
24
24
  async get(key) {
25
- return await this.engine.get(key);
25
+ return this.engine.get(key);
26
26
  }
27
27
  async set(key, value, ttl) {
28
28
  const actualTTL = ttl ? (0, ms_1.default)(ttl) : this.defaultTTL;
29
- return await this.engine.set(key, value, actualTTL);
29
+ return this.engine.set(key, value, actualTTL);
30
30
  }
31
31
  async del(key) {
32
- return await this.engine.del(key);
32
+ return this.engine.del(key);
33
33
  }
34
34
  async clear() {
35
- return await this.engine.clear();
35
+ return this.engine.clear();
36
36
  }
37
37
  async close() {
38
- return await this.engine.close();
38
+ return this.engine.close();
39
39
  }
40
40
  }
41
41
  exports.default = CacheEngine;
@@ -1 +1 @@
1
- {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/cache/Cache.ts"],"names":[],"mappings":";;;AAAA,oDAAmB;AAKnB,2FAA0D;AAC1D,yFAAwD;AAExD,MAAM,WAAW;IAKf,YAAa,YAA2B;QAFvB,YAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAA;QAGrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YAClE,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,CAAC,MAAM,SAAS,CAAC,CAAA;SACjF;QAED,IAAI,CAAC,UAAU,GAAG,IAAA,YAAE,EAAC,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC,CAAA;QAE3D,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE;YACjE,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,2BAAiB,EAAE,CAAA;SACtC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAY;QAC9F,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,IAAA,YAAE,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAClC,CAAC;CACF;AAED,kBAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/cache/Cache.ts"],"names":[],"mappings":";;;AAAA,oDAAmB;AAKnB,2FAA0D;AAC1D,yFAAwD;AAExD,MAAM,WAAW;IAKf,YAAa,YAA2B;QAFvB,YAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAA;QAGrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YAClE,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,CAAC,MAAM,SAAS,CAAC,CAAA;SACjF;QAED,IAAI,CAAC,UAAU,GAAG,IAAA,YAAE,EAAC,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC,CAAA;QAE3D,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE;YACjE,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,2BAAiB,EAAE,CAAA;SACtC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAY;QAC9F,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,IAAA,YAAE,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;CACF;AAED,kBAAe,WAAW,CAAA"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const lodash_1 = tslib_1.__importDefault(require("lodash"));
5
3
  const key_1 = require("../key");
6
4
  function extendQuery(mongoose, cache) {
7
5
  const mongooseExec = mongoose.Aggregate.prototype.exec;
@@ -19,7 +17,7 @@ function extendQuery(mongoose, cache) {
19
17
  return this;
20
18
  };
21
19
  mongoose.Aggregate.prototype.exec = async function () {
22
- if (!lodash_1.default.has(this, '_ttl')) {
20
+ if (!Object.prototype.hasOwnProperty.call(this, '_ttl')) {
23
21
  return mongooseExec.apply(this);
24
22
  }
25
23
  const key = this.getCacheKey();
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/extend/aggregate.ts"],"names":[],"mappings":";;;AAAA,4DAAsB;AAKtB,gCAA+B;AAE/B,SAAwB,WAAW,CAAE,QAAkB,EAAE,KAAY;IAEnE,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAA;IAGtD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,IAAA,YAAM,EAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAY,EAAE,SAAkB;QAC7E,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK;QACvC,IAAI,CAAC,gBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACxB,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SAChC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAE9B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACrD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,EAAE;YACf,OAAO,WAAW,CAAA;SACnB;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAwD,CAAA;QACnG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AA/CD,8BA+CC"}
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/extend/aggregate.ts"],"names":[],"mappings":";;AAGA,gCAA+B;AAE/B,SAAwB,WAAW,CAAE,QAAkB,EAAE,KAAY;IAEnE,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAA;IAGtD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,IAAA,YAAM,EAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAY,EAAE,SAAkB;QAC7E,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK;QACvC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACvD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SAChC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAE9B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACrD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,EAAE;YACf,OAAO,WAAW,CAAA;SACnB;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAwD,CAAA;QACnG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AA/CD,8BA+CC"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const lodash_1 = tslib_1.__importDefault(require("lodash"));
5
3
  const key_1 = require("../key");
6
4
  function extendQuery(mongoose, cache) {
7
5
  const mongooseExec = mongoose.Query.prototype.exec;
@@ -35,7 +33,7 @@ function extendQuery(mongoose, cache) {
35
33
  return this;
36
34
  };
37
35
  mongoose.Query.prototype.exec = async function () {
38
- if (!lodash_1.default.has(this, '_ttl')) {
36
+ if (!Object.prototype.hasOwnProperty.call(this, '_ttl')) {
39
37
  return mongooseExec.apply(this);
40
38
  }
41
39
  const key = this.getCacheKey();
@@ -52,7 +50,7 @@ function extendQuery(mongoose, cache) {
52
50
  return resultCache;
53
51
  }
54
52
  const constructor = mongoose.model(model);
55
- if (lodash_1.default.isArray(resultCache)) {
53
+ if (Array.isArray(resultCache)) {
56
54
  return resultCache.map((item) => constructor.hydrate(item));
57
55
  }
58
56
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/extend/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/extend/query.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,6 @@ class CacheMongoose {
8
8
  constructor() {
9
9
  }
10
10
  static init(mongoose, cacheOptions) {
11
- if (typeof mongoose.Model.hydrate !== 'function')
12
- throw new Error('Cache is only compatible with versions of mongoose that implement the `model.hydrate` method');
13
11
  if (!this.instance) {
14
12
  this.instance = new CacheMongoose();
15
13
  this.instance.cache = new Cache_1.default(cacheOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;AAAA,kEAAiC;AAKjC,mEAAwC;AACxC,2EAAgD;AAyBhD,MAAM,aAAa;IAKjB;IAEA,CAAC;IAEM,MAAM,CAAC,IAAI,CAAE,QAAkB,EAAE,YAA2B;QACjE,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAA;QACjK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;YACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,eAAK,CAAC,YAAY,CAAC,CAAA;YAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;YAEjC,IAAA,eAAW,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC5B,IAAA,mBAAe,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;SACjC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAE,SAAkB;QACpC,IAAI,SAAS,EAAE;YACb,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;SAChC;aAAM;YACL,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,kBAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;AAAA,kEAAiC;AAKjC,mEAAwC;AACxC,2EAAgD;AAyBhD,MAAM,aAAa;IAKjB;IAEA,CAAC;IAEM,MAAM,CAAC,IAAI,CAAE,QAAkB,EAAE,YAA2B;QACjE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;YACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,eAAK,CAAC,YAAY,CAAC,CAAA;YAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;YAEjC,IAAA,eAAW,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC5B,IAAA,mBAAe,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;SACjC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAE,SAAkB;QACpC,IAAI,SAAS,EAAE;YACb,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;SAChC;aAAM;YACL,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,kBAAe,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/extend/aggregate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA+C3E"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/extend/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA+C3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/extend/query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA+E3E"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/extend/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA+E3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAK3D,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAU,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;QACvD,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QACzG,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,CAAA;QAC/E,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;QAC3F,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB;IAED,UAAU,SAAS,CAAC,UAAU;QAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,CAAA;QACpD,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;KACjE;CACF;AAED,cAAM,aAAa;IAEjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO;WAIO,IAAI,CAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa;IAetE,KAAK,CAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAGrC;AAED,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAK3D,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAU,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;QACvD,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QACzG,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,CAAA;QAC/E,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;QAC3F,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB;IAED,UAAU,SAAS,CAAC,UAAU;QAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,CAAA;QACpD,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;KACjE;CACF;AAED,cAAM,aAAa;IAEjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO;WAIO,IAAI,CAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa;IActE,KAAK,CAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAGrC;AAED,eAAe,aAAa,CAAA"}
@@ -19,20 +19,20 @@ class CacheEngine {
19
19
  }
20
20
  }
21
21
  async get(key) {
22
- return await this.engine.get(key);
22
+ return this.engine.get(key);
23
23
  }
24
24
  async set(key, value, ttl) {
25
25
  const actualTTL = ttl ? ms(ttl) : this.defaultTTL;
26
- return await this.engine.set(key, value, actualTTL);
26
+ return this.engine.set(key, value, actualTTL);
27
27
  }
28
28
  async del(key) {
29
- return await this.engine.del(key);
29
+ return this.engine.del(key);
30
30
  }
31
31
  async clear() {
32
- return await this.engine.clear();
32
+ return this.engine.clear();
33
33
  }
34
34
  async close() {
35
- return await this.engine.close();
35
+ return this.engine.close();
36
36
  }
37
37
  }
38
38
  export default CacheEngine;
@@ -1 +1 @@
1
- {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/cache/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAKnB,OAAO,iBAAiB,MAAM,4BAA4B,CAAA;AAC1D,OAAO,gBAAgB,MAAM,2BAA2B,CAAA;AAExD,MAAM,WAAW;IAKf,YAAa,YAA2B;QAFvB,YAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAA;QAGrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YAClE,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,CAAC,MAAM,SAAS,CAAC,CAAA;SACjF;QAED,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC,CAAA;QAE3D,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE;YACjE,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAA;SACtC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAY;QAC9F,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAClC,CAAC;CACF;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/cache/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAKnB,OAAO,iBAAiB,MAAM,4BAA4B,CAAA;AAC1D,OAAO,gBAAgB,MAAM,2BAA2B,CAAA;AAExD,MAAM,WAAW;IAKf,YAAa,YAA2B;QAFvB,YAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAA;QAGrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YAClE,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,CAAC,MAAM,SAAS,CAAC,CAAA;SACjF;QAED,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC,CAAA;QAE3D,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE;YACjE,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAA;SACtC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAY;QAC9F,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;CACF;AAED,eAAe,WAAW,CAAA"}
@@ -1,4 +1,3 @@
1
- import _ from 'lodash';
2
1
  import { getKey } from '../key';
3
2
  export default function extendQuery(mongoose, cache) {
4
3
  const mongooseExec = mongoose.Aggregate.prototype.exec;
@@ -16,7 +15,7 @@ export default function extendQuery(mongoose, cache) {
16
15
  return this;
17
16
  };
18
17
  mongoose.Aggregate.prototype.exec = async function () {
19
- if (!_.has(this, '_ttl')) {
18
+ if (!Object.prototype.hasOwnProperty.call(this, '_ttl')) {
20
19
  return mongooseExec.apply(this);
21
20
  }
22
21
  const key = this.getCacheKey();
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/extend/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAKtB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAkB,EAAE,KAAY;IAEnE,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAA;IAGtD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,MAAM,CAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAY,EAAE,SAAkB;QAC7E,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK;QACvC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACxB,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SAChC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAE9B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACrD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,EAAE;YACf,OAAO,WAAW,CAAA;SACnB;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAwD,CAAA;QACnG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/extend/aggregate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAkB,EAAE,KAAY;IAEnE,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAA;IAGtD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,MAAM,CAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAY,EAAE,SAAkB;QAC7E,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;QACf,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK;QACvC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACvD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SAChC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAE9B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACrD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,EAAE;YACf,OAAO,WAAW,CAAA;SACnB;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAwD,CAAA;QACnG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC"}
@@ -1,4 +1,3 @@
1
- import _ from 'lodash';
2
1
  import { getKey } from '../key';
3
2
  export default function extendQuery(mongoose, cache) {
4
3
  const mongooseExec = mongoose.Query.prototype.exec;
@@ -32,7 +31,7 @@ export default function extendQuery(mongoose, cache) {
32
31
  return this;
33
32
  };
34
33
  mongoose.Query.prototype.exec = async function () {
35
- if (!_.has(this, '_ttl')) {
34
+ if (!Object.prototype.hasOwnProperty.call(this, '_ttl')) {
36
35
  return mongooseExec.apply(this);
37
36
  }
38
37
  const key = this.getCacheKey();
@@ -49,7 +48,7 @@ export default function extendQuery(mongoose, cache) {
49
48
  return resultCache;
50
49
  }
51
50
  const constructor = mongoose.model(model);
52
- if (_.isArray(resultCache)) {
51
+ if (Array.isArray(resultCache)) {
53
52
  return resultCache.map((item) => constructor.hydrate(item));
54
53
  }
55
54
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/extend/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/extend/query.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAA;AAKjC,OAAO,WAAW,MAAM,gBAAgB,CAAA;AACxC,OAAO,eAAe,MAAM,oBAAoB,CAAA;AAyBhD,MAAM,aAAa;IAKjB;IAEA,CAAC;IAEM,MAAM,CAAC,IAAI,CAAE,QAAkB,EAAE,YAA2B;QACjE,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAA;QACjK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;YACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA;YAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;YAEjC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC5B,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;SACjC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAE,SAAkB;QACpC,IAAI,SAAS,EAAE;YACb,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;SAChC;aAAM;YACL,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAA;AAKjC,OAAO,WAAW,MAAM,gBAAgB,CAAA;AACxC,OAAO,eAAe,MAAM,oBAAoB,CAAA;AAyBhD,MAAM,aAAa;IAKjB;IAEA,CAAC;IAEM,MAAM,CAAC,IAAI,CAAE,QAAkB,EAAE,YAA2B;QACjE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;YACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA;YAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;YAEjC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC5B,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;SACjC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAE,SAAkB;QACpC,IAAI,SAAS,EAAE;YACb,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;SAChC;aAAM;YACL,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,eAAe,aAAa,CAAA"}
@@ -5,8 +5,6 @@ class CacheMongoose {
5
5
  constructor() {
6
6
  }
7
7
  static init(mongoose, cacheOptions) {
8
- if (typeof mongoose.Model.hydrate !== 'function')
9
- throw new Error('Cache is only compatible with versions of mongoose that implement the `model.hydrate` method');
10
8
  if (!this.instance) {
11
9
  this.instance = new CacheMongoose();
12
10
  this.instance.cache = new Cache(cacheOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/extend/aggregate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA+C3E"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/extend/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA+C3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/extend/query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA+E3E"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/extend/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAIvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA+E3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAK3D,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAU,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;QACvD,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QACzG,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,CAAA;QAC/E,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;QAC3F,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB;IAED,UAAU,SAAS,CAAC,UAAU;QAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,CAAA;QACpD,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;KACjE;CACF;AAED,cAAM,aAAa;IAEjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO;WAIO,IAAI,CAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa;IAetE,KAAK,CAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAGrC;AAED,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAK3D,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAU,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;QACvD,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QACzG,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,CAAA;QAC/E,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;QAC3F,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB;IAED,UAAU,SAAS,CAAC,UAAU;QAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,CAAA;QACpD,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;KACjE;CACF;AAED,cAAM,aAAa;IAEjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO;WAIO,IAAI,CAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa;IActE,KAAK,CAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAGrC;AAED,eAAe,aAAa,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ts-cache-mongoose",
3
- "version": "0.0.6",
4
- "description": "Cache plugin for mongoose",
3
+ "version": "1.0.1",
4
+ "description": "Cache plugin for mongoose Queries and Aggregate (in-memory, redis)",
5
5
  "author": "Alex Eagle",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -16,6 +16,7 @@
16
16
  "examples": "examples"
17
17
  },
18
18
  "keywords": [
19
+ "backend",
19
20
  "mongo",
20
21
  "mongodb",
21
22
  "mongoose",
@@ -31,7 +32,8 @@
31
32
  "store",
32
33
  "memory",
33
34
  "ttl",
34
- "query"
35
+ "query",
36
+ "aggregate"
35
37
  ],
36
38
  "engines": {
37
39
  "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -74,21 +76,19 @@
74
76
  },
75
77
  "dependencies": {
76
78
  "ioredis": "5.3.2",
77
- "lodash": "4.17.21",
78
79
  "ms": "2.1.3",
79
80
  "sort-keys": "4.2.0"
80
81
  },
81
82
  "devDependencies": {
82
83
  "@shelf/jest-mongodb": "4.1.7",
83
84
  "@swc/cli": "0.1.62",
84
- "@swc/core": "1.3.55",
85
+ "@swc/core": "1.3.56",
85
86
  "@swc/helpers": "0.5.1",
86
87
  "@swc/jest": "0.2.26",
87
88
  "@swc/register": "0.1.10",
88
89
  "@types/jest": "29.5.1",
89
- "@types/lodash": "4.14.194",
90
90
  "@types/ms": "^0.7.31",
91
- "@types/node": "18.16.1",
91
+ "@types/node": "18.16.3",
92
92
  "@typescript-eslint/eslint-plugin": "5.59.1",
93
93
  "@typescript-eslint/parser": "5.59.1",
94
94
  "eslint": "8.39.0",
@@ -32,24 +32,24 @@ class CacheEngine {
32
32
  }
33
33
 
34
34
  async get (key: string): Promise<Record<string, unknown> | Record<string, unknown>[] | undefined> {
35
- return await this.engine.get(key)
35
+ return this.engine.get(key)
36
36
  }
37
37
 
38
38
  async set (key: string, value: Record<string, unknown> | Record<string, unknown>[], ttl?: string): Promise<void> {
39
39
  const actualTTL = ttl ? ms(ttl) : this.defaultTTL
40
- return await this.engine.set(key, value, actualTTL)
40
+ return this.engine.set(key, value, actualTTL)
41
41
  }
42
42
 
43
43
  async del (key: string): Promise<void> {
44
- return await this.engine.del(key)
44
+ return this.engine.del(key)
45
45
  }
46
46
 
47
47
  async clear (): Promise<void> {
48
- return await this.engine.clear()
48
+ return this.engine.clear()
49
49
  }
50
50
 
51
51
  async close (): Promise<void> {
52
- return await this.engine.close()
52
+ return this.engine.close()
53
53
  }
54
54
  }
55
55
 
@@ -1,5 +1,3 @@
1
- import _ from 'lodash'
2
-
3
1
  import type { Mongoose } from 'mongoose'
4
2
  import type Cache from '../cache/Cache'
5
3
 
@@ -30,7 +28,7 @@ export default function extendQuery (mongoose: Mongoose, cache: Cache): void {
30
28
 
31
29
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
32
30
  mongoose.Aggregate.prototype.exec = async function () {
33
- if (!_.has(this, '_ttl')) {
31
+ if (!Object.prototype.hasOwnProperty.call(this, '_ttl')) {
34
32
  return mongooseExec.apply(this)
35
33
  }
36
34
 
@@ -1,5 +1,3 @@
1
- import _ from 'lodash'
2
-
3
1
  import type { Mongoose } from 'mongoose'
4
2
  import type Cache from '../cache/Cache'
5
3
 
@@ -48,7 +46,7 @@ export default function extendQuery (mongoose: Mongoose, cache: Cache): void {
48
46
 
49
47
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
50
48
  mongoose.Query.prototype.exec = async function () {
51
- if (!_.has(this, '_ttl')) {
49
+ if (!Object.prototype.hasOwnProperty.call(this, '_ttl')) {
52
50
  return mongooseExec.apply(this)
53
51
  }
54
52
 
@@ -70,7 +68,7 @@ export default function extendQuery (mongoose: Mongoose, cache: Cache): void {
70
68
  }
71
69
 
72
70
  const constructor = mongoose.model(model)
73
- if (_.isArray(resultCache)) {
71
+ if (Array.isArray(resultCache)) {
74
72
  return resultCache.map((item) => constructor.hydrate(item) as Record<string, unknown>)
75
73
  } else {
76
74
  return constructor.hydrate(resultCache) as Record<string, unknown>
package/src/plugin.ts CHANGED
@@ -39,7 +39,6 @@ class CacheMongoose {
39
39
  }
40
40
 
41
41
  public static init (mongoose: Mongoose, cacheOptions: ICacheOptions): CacheMongoose {
42
- if (typeof mongoose.Model.hydrate !== 'function') throw new Error('Cache is only compatible with versions of mongoose that implement the `model.hydrate` method')
43
42
  if (!this.instance) {
44
43
  this.instance = new CacheMongoose()
45
44
  this.instance.cache = new Cache(cacheOptions)
@@ -13,6 +13,7 @@ describe('CacheMongoose', () => {
13
13
 
14
14
  beforeAll(async () => {
15
15
  await mongoose.connect(uri)
16
+ await cache.clear()
16
17
  })
17
18
 
18
19
  afterAll(async () => {
@@ -18,6 +18,7 @@ describe('cache redis', () => {
18
18
 
19
19
  beforeAll(async () => {
20
20
  await mongoose.connect(uri)
21
+ await cache.clear()
21
22
  })
22
23
 
23
24
  afterAll(async () => {
@@ -29,75 +30,73 @@ describe('cache redis', () => {
29
30
  await mongoose.connection.collection('users').deleteMany({})
30
31
  })
31
32
 
32
- describe('memory scenarios', () => {
33
- it('should use memory cache', async () => {
34
- const user = await User.create({
35
- name: 'John Doe',
36
- role: 'admin'
37
- })
38
-
39
- const user1 = await User.findById(user._id).cache()
40
- await User.findOneAndUpdate({ _id: user._id }, { name: 'John Doe 2' })
41
- const user2 = await User.findById(user._id).cache()
42
-
43
- expect(user1).not.toBeNull()
44
- expect(user2).not.toBeNull()
45
- expect(user1?._id).toEqual(user2?._id)
46
- expect(user1?.name).toEqual(user2?.name)
33
+ it('should use cache', async () => {
34
+ const user = await User.create({
35
+ name: 'John Doe',
36
+ role: 'admin'
47
37
  })
48
38
 
49
- it('should not use cache', async () => {
50
- const user = await User.create({
51
- name: 'John Doe',
52
- role: 'admin'
53
- })
39
+ const user1 = await User.findById(user._id).cache()
40
+ await User.findOneAndUpdate({ _id: user._id }, { name: 'John Doe 2' })
41
+ const user2 = await User.findById(user._id).cache()
54
42
 
55
- const cache1 = await User.findById(user._id).cache().exec()
56
- await User.findByIdAndUpdate(user._id, { name: 'John Doe 2' })
57
- await cache.clear()
58
- const cache2 = await User.findById(user._id).cache().exec()
43
+ expect(user1).not.toBeNull()
44
+ expect(user2).not.toBeNull()
45
+ expect(user1?._id).toEqual(user2?._id)
46
+ expect(user1?.name).toEqual(user2?.name)
47
+ })
59
48
 
60
- expect(cache1).not.toBeNull()
61
- expect(cache2).not.toBeNull()
62
- expect(cache1?._id).toEqual(cache2?._id)
63
- expect(cache1?.name).not.toEqual(cache2?.name)
49
+ it('should clear cache', async () => {
50
+ const user = await User.create({
51
+ name: 'John Doe',
52
+ role: 'admin'
64
53
  })
65
54
 
66
- it('should use memory cache with custom key', async () => {
67
- const user = await User.create({
68
- name: 'John Doe',
69
- role: 'admin'
70
- })
55
+ const cache1 = await User.findById(user._id).cache().exec()
56
+ await User.findByIdAndUpdate(user._id, { name: 'Steve' }).exec()
57
+ await cache.clear()
58
+ const cache2 = await User.findById(user._id).cache().exec()
71
59
 
72
- const cache1 = await User.findById(user._id).cache('1 minute', 'test-custom-key').exec()
73
- await User.findOneAndUpdate({ _id: user._id }, { name: 'John Doe 2' })
74
- const cache2 = await User.findById(user._id).cache('1 minute', 'test-custom-key').exec()
60
+ expect(cache1).not.toBeNull()
61
+ expect(cache2).not.toBeNull()
62
+ expect(cache1?._id).toEqual(cache2?._id)
63
+ expect(cache1?.name).not.toEqual(cache2?.name)
64
+ })
75
65
 
76
- expect(cache1).not.toBeNull()
77
- expect(cache2).not.toBeNull()
78
- expect(cache1?._id).toEqual(cache2?._id)
79
- expect(cache1?.name).toEqual(cache2?.name)
66
+ it('should use cache with custom-key-1', async () => {
67
+ const user = await User.create({
68
+ name: 'John Doe',
69
+ role: 'admin'
80
70
  })
81
71
 
82
- it('should use memory cache and clear custom key', async () => {
83
- const user = await User.create({
84
- name: 'John Doe',
85
- role: 'admin'
86
- })
72
+ const cache1 = await User.findById(user._id).cache('1 minute', 'custom-key-1').exec()
73
+ await User.findOneAndUpdate({ _id: user._id }, { name: 'John Doe 2' })
74
+ const cache2 = await User.findById(user._id).cache('1 minute', 'custom-key-1').exec()
87
75
 
88
- const cache1 = await User.findById(user._id).cache('1 minute', 'test-custom-key-second').exec()
89
- await User.updateOne({ _id: user._id }, { name: 'John Doe 2' })
90
- await cache.clear('test-custom-key-second')
91
- const cache2 = await User.findById(user._id).cache('1 minute', 'test-custom-key-second').exec()
76
+ expect(cache1).not.toBeNull()
77
+ expect(cache2).not.toBeNull()
78
+ expect(cache1?._id).toEqual(cache2?._id)
79
+ expect(cache1?.name).toEqual(cache2?.name)
80
+ })
92
81
 
93
- expect(cache1).not.toBeNull()
94
- expect(cache2).not.toBeNull()
95
- expect(cache1?._id).toEqual(cache2?._id)
96
- expect(cache1?.name).not.toEqual(cache2?.name)
82
+ it('should clear custom-key-2', async () => {
83
+ const user = await User.create({
84
+ name: 'John Doe',
85
+ role: 'admin'
97
86
  })
87
+
88
+ const cache1 = await User.findById(user._id).cache('1 minute', 'custom-key-2').exec()
89
+ await User.updateOne({ _id: user._id }, { name: 'Steve' })
90
+ await cache.clear('custom-key-2')
91
+ const cache2 = await User.findById(user._id).cache('1 minute', 'custom-key-2').exec()
92
+
93
+ expect(cache1).not.toBeNull()
94
+ expect(cache2).not.toBeNull()
95
+ expect(cache1?._id).toEqual(cache2?._id)
96
+ expect(cache1?.name).not.toEqual(cache2?.name)
98
97
  })
99
98
 
100
- it('should use redis cache', async () => {
99
+ it('should use cache without cache options', async () => {
101
100
  expect(cache).toBeDefined()
102
101
 
103
102
  const user = await User.create({
@@ -116,17 +115,17 @@ describe('cache redis', () => {
116
115
 
117
116
  await User.create([
118
117
  {
119
- name: 'John Doe 3',
118
+ name: 'Alice',
120
119
  role: 'admin'
121
120
  },
122
121
  {
123
- name: 'John Doe 4',
122
+ name: 'Bob',
124
123
  role: 'admin'
125
124
  }
126
125
  ])
127
126
 
128
127
  const cache3 = await User.find({ role: 'admin' }).cache()
129
- await User.updateMany({ role: 'admin' }, { name: 'John Doe 5' })
128
+ await User.updateMany({ role: 'admin' }, { name: 'Steve' })
130
129
  const cache4 = await User.find({ role: 'admin' }).cache()
131
130
 
132
131
  expect(cache3).not.toBeNull()
@@ -135,7 +134,7 @@ describe('cache redis', () => {
135
134
  expect(cache3?.[0].name).toEqual(cache4?.[0].name)
136
135
  })
137
136
 
138
- it('should use redis cache and aggregate', async () => {
137
+ it('should use cache on aggregate', async () => {
139
138
  await User.create([
140
139
  { name: 'John', role: 'admin' },
141
140
  { name: 'Bob', role: 'admin' },
@@ -158,4 +157,76 @@ describe('cache redis', () => {
158
157
  expect(cache2).not.toBeNull()
159
158
  expect(cache1?.[0].count).toEqual(cache2?.[0].count)
160
159
  })
160
+
161
+ it('should use cache on aggregate with custom-key', async () => {
162
+ await User.create([
163
+ { name: 'John', role: 'admin' },
164
+ { name: 'Bob', role: 'admin' },
165
+ { name: 'Alice', role: 'user' }
166
+ ])
167
+
168
+ const cache1 = await User.aggregate([
169
+ { $match: { role: 'admin' } },
170
+ { $group: { _id: '$role', count: { $sum: 1 } } }
171
+ ]).cache('1 minute', 'aggregate-custom-key')
172
+
173
+ await User.create({ name: 'Mark', role: 'admin' })
174
+
175
+ const cache2 = await User.aggregate([
176
+ { $match: { role: 'admin' } },
177
+ { $group: { _id: '$role', count: { $sum: 1 } } }
178
+ ]).cache('1 minute', 'aggregate-custom-key')
179
+
180
+ // Don't use cache key
181
+ const cache3 = await User.aggregate([
182
+ { $match: { role: 'admin' } },
183
+ { $group: { _id: '$role', count: { $sum: 1 } } }
184
+ ])
185
+
186
+ expect(cache1).not.toBeNull()
187
+ expect(cache2).not.toBeNull()
188
+ expect(cache3).not.toBeNull()
189
+ expect(cache1?.[0].count).toEqual(cache2?.[0].count)
190
+ expect(cache1?.[0].count).not.toEqual(cache3?.[0].count)
191
+ })
192
+
193
+ it('should test lean cache', async () => {
194
+ await User.create([
195
+ { name: 'John', role: 'admin' },
196
+ { name: 'Bob', role: 'admin' },
197
+ { name: 'Alice', role: 'user' }
198
+ ])
199
+
200
+ const cache1 = await User.find({ role: 'admin' }).lean().cache('1 minute')
201
+ await User.create({ name: 'Mark', role: 'admin' })
202
+ const cache2 = await User.find({ role: 'admin' }).lean().cache('1 minute')
203
+
204
+ expect(cache1).not.toBeNull()
205
+ expect(cache2).not.toBeNull()
206
+ expect(cache1?.length).toEqual(cache2?.length)
207
+ })
208
+
209
+ it('should cache with regex query', async () => {
210
+ await User.create([
211
+ { name: 'John', role: 'admin' },
212
+ { name: 'Alice', role: 'user' },
213
+ { name: 'Andy', role: 'user' }
214
+ ])
215
+
216
+ const cache1 = await User.find({ name: /^J/ }).cache('1 minute')
217
+ await User.create({ name: 'Jenifer', role: 'admin' })
218
+ const cache2 = await User.find({ name: /^J/ }).cache('1 minute')
219
+
220
+ expect(cache1).not.toBeNull()
221
+ expect(cache2).not.toBeNull()
222
+ expect(cache1?.length).toEqual(cache2?.length)
223
+
224
+ const cache3 = await User.find({ name: /^A/ }).cache('1 hour')
225
+ await User.create({ name: 'Alex', role: 'admin' })
226
+ const cache4 = await User.find({ name: /^A/ }).cache('1 hour')
227
+
228
+ expect(cache3).not.toBeNull()
229
+ expect(cache4).not.toBeNull()
230
+ expect(cache3?.length).toEqual(cache4?.length)
231
+ })
161
232
  })