@knaus94/prisma-extension-cache-manager 1.5.69 → 1.5.72
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 +1 -0
- package/dist/index.js +15 -9
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -6,6 +6,7 @@ A caching extension for [Prisma](https://www.prisma.io/), compatible with [cache
|
|
|
6
6
|
|
|
7
7
|
- [cache-manager](https://www.npmjs.com/package/cache-manager) compatibility
|
|
8
8
|
- Only model queries can be cacheable (no $query or $queryRaw)
|
|
9
|
+
- Supported Decimal
|
|
9
10
|
|
|
10
11
|
## Installation
|
|
11
12
|
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ const msgpack_lite_1 = require("msgpack-lite");
|
|
|
10
10
|
* В дальнейшем используем его encode/decode для сериализации/десериализации.
|
|
11
11
|
*/
|
|
12
12
|
const codec = (0, msgpack_lite_1.createCodec)();
|
|
13
|
-
const TYPE_DECIMAL =
|
|
13
|
+
const TYPE_DECIMAL = 0x3F;
|
|
14
14
|
const TYPE_DATE = 0x0d;
|
|
15
15
|
/**
|
|
16
16
|
* Регистрируем тип `Decimal`.
|
|
@@ -18,10 +18,10 @@ const TYPE_DATE = 0x0d;
|
|
|
18
18
|
* - При декодировании восстанавливаем обратно в `Decimal`.
|
|
19
19
|
*/
|
|
20
20
|
codec.addExtPacker(TYPE_DECIMAL, library_1.Decimal, (decimal) => {
|
|
21
|
-
return
|
|
21
|
+
return (0, msgpack_lite_1.encode)(decimal.toString());
|
|
22
22
|
});
|
|
23
23
|
codec.addExtUnpacker(TYPE_DECIMAL, (buffer) => {
|
|
24
|
-
return new library_1.Decimal(
|
|
24
|
+
return new library_1.Decimal((0, msgpack_lite_1.decode)(buffer));
|
|
25
25
|
});
|
|
26
26
|
/**
|
|
27
27
|
* Регистрируем тип `Date`.
|
|
@@ -29,10 +29,10 @@ codec.addExtUnpacker(TYPE_DECIMAL, (buffer) => {
|
|
|
29
29
|
* - При декодировании восстанавливаем обратно в `Date`.
|
|
30
30
|
*/
|
|
31
31
|
codec.addExtPacker(TYPE_DATE, Date, (date) => {
|
|
32
|
-
return
|
|
32
|
+
return (0, msgpack_lite_1.encode)(date.toISOString());
|
|
33
33
|
});
|
|
34
34
|
codec.addExtUnpacker(TYPE_DATE, (buffer) => {
|
|
35
|
-
return new Date(
|
|
35
|
+
return new Date((0, msgpack_lite_1.decode)(buffer));
|
|
36
36
|
});
|
|
37
37
|
/**
|
|
38
38
|
* Генерирует уникальный ключ для кеширования на основе модели и аргументов запроса.
|
|
@@ -55,13 +55,13 @@ function createKey(key, namespace) {
|
|
|
55
55
|
return namespace ? `${namespace}:${key}` : key;
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
|
-
* Сериализация данных
|
|
58
|
+
* Сериализация данных
|
|
59
59
|
*/
|
|
60
60
|
function serialize(data) {
|
|
61
61
|
return (0, msgpack_lite_1.encode)(data, { codec });
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
* Десериализация данных
|
|
64
|
+
* Десериализация данных
|
|
65
65
|
*/
|
|
66
66
|
function deserialize(buffer) {
|
|
67
67
|
return (0, msgpack_lite_1.decode)(buffer, { codec });
|
|
@@ -200,11 +200,14 @@ exports.default = ({ cache, debug, ttl: defaultTTL }) => {
|
|
|
200
200
|
if (ttl === undefined) {
|
|
201
201
|
ttl = defaultTTL;
|
|
202
202
|
}
|
|
203
|
+
if (ttl) {
|
|
204
|
+
ttl = Math.ceil(ttl / 1000);
|
|
205
|
+
}
|
|
203
206
|
// Сохраняем результат в кеш
|
|
204
207
|
try {
|
|
205
208
|
const encoded = serialize(result);
|
|
206
209
|
await (ttl && ttl > 0
|
|
207
|
-
? cache.store.client.set(cacheKey, encoded, "EX", ttl
|
|
210
|
+
? cache.store.client.set(cacheKey, encoded, "EX", ttl)
|
|
208
211
|
: cache.store.client.set(cacheKey, encoded));
|
|
209
212
|
if (debug) {
|
|
210
213
|
console.log("Data cached with key (function):", cacheKey, "encoded:", encoded, "decoded:", result);
|
|
@@ -257,11 +260,14 @@ exports.default = ({ cache, debug, ttl: defaultTTL }) => {
|
|
|
257
260
|
if (ttl === undefined) {
|
|
258
261
|
ttl = defaultTTL;
|
|
259
262
|
}
|
|
263
|
+
if (ttl) {
|
|
264
|
+
ttl = Math.ceil(ttl / 1000);
|
|
265
|
+
}
|
|
260
266
|
// 6. Сохраняем результат запроса в кеш
|
|
261
267
|
try {
|
|
262
268
|
const encoded = serialize(result);
|
|
263
269
|
await (ttl && ttl > 0
|
|
264
|
-
? cache.store.client.set(cacheKey, encoded, "EX", ttl
|
|
270
|
+
? cache.store.client.set(cacheKey, encoded, "EX", ttl)
|
|
265
271
|
: cache.store.client.set(cacheKey, encoded));
|
|
266
272
|
if (debug) {
|
|
267
273
|
console.log("Data cached with key:", cacheKey, "encoded:", encoded, "decoded:", result);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knaus94/prisma-extension-cache-manager",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.72",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/knaus94/prisma-extension-cache-manager.git"
|
|
@@ -59,5 +59,10 @@
|
|
|
59
59
|
"cache-manager": "^5.2.3",
|
|
60
60
|
"cache-manager-ioredis-yet": "^2.1.1",
|
|
61
61
|
"msgpack-lite": "^0.1.26"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"@nestjs/cache-manager": "^1.0.0",
|
|
65
|
+
"cache-manager": "^5.2.0",
|
|
66
|
+
"cache-manager-ioredis-yet": "^2.1.1"
|
|
62
67
|
}
|
|
63
68
|
}
|