UNPKG

prisma-extension-cache-manager

Version:
41 lines (40 loc) 1.78 kB
import { Prisma } from '@prisma/client/extension'; import type { Cache } from 'cache-manager'; export declare const REQUIRED_ARGS_OPERATIONS: readonly ["findUnique", "findUniqueOrThrow", "groupBy", "aggregate"]; export declare const OPTIONAL_ARGS_OPERATIONS: readonly ["findMany", "findFirst", "findFirstOrThrow", "count"]; export declare const CACHE_OPERATIONS: readonly ["findUnique", "findUniqueOrThrow", "groupBy", "aggregate", "findMany", "findFirst", "findFirstOrThrow", "count"]; type RequiredArgsOperation = (typeof REQUIRED_ARGS_OPERATIONS)[number]; type OptionalArgsOperation = (typeof OPTIONAL_ARGS_OPERATIONS)[number]; export type CacheOperation = RequiredArgsOperation | OptionalArgsOperation; type RequiredArgsFunction<O extends RequiredArgsOperation> = <T, A>(this: T, args: Prisma.Exact<A, Prisma.Args<T, O> & PrismaCacheArgs>) => Promise<Prisma.Result<T, A, O>>; type OptionalArgsFunction<O extends OptionalArgsOperation> = <T, A>(this: T, args?: Prisma.Exact<A, Prisma.Args<T, O> & PrismaCacheArgs>) => Promise<Prisma.Result<T, A, O>>; export type ModelExtension = { [O1 in RequiredArgsOperation]: RequiredArgsFunction<O1>; } & { [O2 in OptionalArgsOperation]: OptionalArgsFunction<O2>; }; export interface CacheOptions { /** * Time-to-live in milliseconds */ ttl?: number; /** * Cache key */ key?: string; } export type CacheConfig = true | number | CacheOptions; export interface PrismaCacheArgs { cache?: CacheConfig; } export type KeyGeneratorArgs = { model: string; operation: string; args: unknown; }; export type KeyGenerator = (args: KeyGeneratorArgs) => string | Promise<string>; export interface PrismaCacheExtensionConfig { cache: Cache; keyGenerator?: KeyGenerator; } export {};