@knaus94/prisma-extension-cache-manager 1.0.1 → 1.0.2

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/dist/index.js CHANGED
@@ -12,15 +12,25 @@ export default ({ cache }) => {
12
12
  query: {
13
13
  $allModels: {
14
14
  async $allOperations({ model, operation, args, query }) {
15
- let result;
15
+ const isOperationSupported = CACHE_OPERATIONS.includes(operation);
16
+ const queryArgs = {
17
+ ...args,
18
+ };
19
+ const useUncache = typeof args["uncache"] === "object" &&
20
+ args["uncache"] !== null &&
21
+ isOperationSupported;
22
+ if (useUncache) {
23
+ delete queryArgs["uncache"];
24
+ const { uncacheKeys } = args["uncache"];
25
+ if (uncacheKeys?.length > 0) {
26
+ await Promise.all(uncacheKeys.map((key) => cache.del(key)));
27
+ }
28
+ }
16
29
  const useCache = ["boolean", "object"].includes(typeof args["cache"]) &&
17
30
  args["cache"] !== null &&
18
- CACHE_OPERATIONS.includes(operation);
31
+ isOperationSupported;
19
32
  if (!useCache)
20
33
  return query(args);
21
- const queryArgs = {
22
- ...args,
23
- };
24
34
  delete queryArgs["cache"];
25
35
  if (typeof args["cache"] === "boolean") {
26
36
  const cacheKey = `prisma-${model}-${JSON.stringify(queryArgs)}`;
@@ -28,7 +38,7 @@ export default ({ cache }) => {
28
38
  if (cached) {
29
39
  return typeof cached === "string" ? JSON.parse(cached) : cached;
30
40
  }
31
- result = await query(queryArgs);
41
+ const result = await query(queryArgs);
32
42
  await cache.set(cacheKey, JSON.stringify(result));
33
43
  return result;
34
44
  }
@@ -38,7 +48,7 @@ export default ({ cache }) => {
38
48
  if (cached) {
39
49
  return typeof cached === "string" ? JSON.parse(cached) : cached;
40
50
  }
41
- result = await query(queryArgs);
51
+ const result = await query(queryArgs);
42
52
  const value = JSON.stringify(result);
43
53
  if (ttl) {
44
54
  await cache.set(customCacheKey, value, ttl);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EACL,gBAAgB,GAIjB,MAAM,SAAS,CAAC;AAEjB,eAAe,CAAC,EAAE,KAAK,EAA0B,EAAE,EAAE;IACnD,OAAO,MAAM,CAAC,eAAe,CAAC;QAC5B,IAAI,EAAE,gCAAgC;QACtC,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,UAAU,EAAE,EAAoB;SACjC;QACD,KAAK,EAAE;YACL,UAAU,EAAE;gBACV,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE;oBACpD,IAAI,MAAW,CAAC;oBAChB,MAAM,QAAQ,GACZ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;wBACpD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI;wBACrB,gBAA0C,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAElE,IAAI,CAAC,QAAQ;wBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;oBAElC,MAAM,SAAS,GAAG;wBAChB,GAAG,IAAI;qBACR,CAAC;oBACF,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;oBAE1B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;wBACvC,MAAM,QAAQ,GAAG,UAAU,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAEzC,IAAI,MAAM,EAAE,CAAC;4BACX,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBAClE,CAAC;wBAED,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;wBAChC,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;wBAClD,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAED,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAA4B,CAAC;oBAC9D,MAAM,cAAc,GAClB,GAAG,IAAI,iBAAiB,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAE/C,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAClE,CAAC;oBAED,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;oBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAErC,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC9C,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;oBACzC,CAAC;oBAED,OAAO,MAAM,CAAC;gBAChB,CAAC;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { Prisma } from "@prisma/client/extension";
2
2
  import { Cache } from "cache-manager";
3
- export declare const REQUIRED_ARGS_OPERATIONS: readonly ["findUnique", "findUniqueOrThrow", "groupBy"];
3
+ export declare const REQUIRED_ARGS_OPERATIONS: readonly ["delete", "findUnique", "findUniqueOrThrow", "groupBy", "update", "upsert"];
4
4
  export declare const OPTIONAL_ARGS_OPERATIONS: readonly ["findMany", "findFirst", "findFirstOrThrow", "count"];
5
- export declare const CACHE_OPERATIONS: readonly ["findUnique", "findUniqueOrThrow", "groupBy", "findMany", "findFirst", "findFirstOrThrow", "count"];
5
+ export declare const CACHE_OPERATIONS: readonly ["delete", "findUnique", "findUniqueOrThrow", "groupBy", "update", "upsert", "findMany", "findFirst", "findFirstOrThrow", "count"];
6
6
  type RequiredArgsOperation = (typeof REQUIRED_ARGS_OPERATIONS)[number];
7
7
  type OptionalArgsOperation = (typeof OPTIONAL_ARGS_OPERATIONS)[number];
8
8
  type RequiredArgsFunction<O extends RequiredArgsOperation> = <T, A>(this: T, args: Prisma.Exact<A, Prisma.Args<T, O> & PrismaCacheArgs>) => Promise<Prisma.Result<T, A, O>>;
@@ -22,8 +22,15 @@ export interface CacheOptions {
22
22
  */
23
23
  ttl?: number;
24
24
  }
25
+ export interface UncacheOptions {
26
+ /**
27
+ * Uncache keys
28
+ */
29
+ uncacheKeys: string[];
30
+ }
25
31
  export interface PrismaCacheArgs {
26
32
  cache?: boolean | CacheOptions;
33
+ uncache?: UncacheOptions;
27
34
  }
28
35
  export interface PrismaRedisCacheConfig {
29
36
  cache: Cache;
package/dist/types.js CHANGED
@@ -1,7 +1,10 @@
1
1
  export const REQUIRED_ARGS_OPERATIONS = [
2
+ "delete",
2
3
  "findUnique",
3
4
  "findUniqueOrThrow",
4
5
  "groupBy",
6
+ "update",
7
+ "upsert",
5
8
  ];
6
9
  export const OPTIONAL_ARGS_OPERATIONS = [
7
10
  "findMany",
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,YAAY;IACZ,mBAAmB;IACnB,SAAS;CACkC,CAAC;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU;IACV,WAAW;IACX,kBAAkB;IAClB,OAAO;CACoC,CAAC;AAE9C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,GAAG,wBAAwB;IAC3B,GAAG,wBAAwB;CACnB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,QAAQ;IACR,YAAY;IACZ,mBAAmB;IACnB,SAAS;IACT,QAAQ;IACR,QAAQ;CACmC,CAAC;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU;IACV,WAAW;IACX,kBAAkB;IAClB,OAAO;CACoC,CAAC;AAE9C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,GAAG,wBAAwB;IAC3B,GAAG,wBAAwB;CACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knaus94/prisma-extension-cache-manager",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/knaus94/prisma-extension-cache-manager.git"