<div> <a href="https://www.npmjs.com/package/prisma-cache-nosql"> <img alt="npm" src="https://img.shields.io/npm/v/prisma-cache-nosql?logo=npm&logoColor=white"> </a> <a href="https://github.com/BearToCode/prisma-cache-nosql/blob/master/LICENSE"> <i
npm install prisma-cache-nosqlprisma-cache-nosqlA Prisma extension to store queries results in a temporary NoSQL cache. Currently supported storage options are standard memory and AceBase.
Using npm:
```
npm i prisma-cache-nosql
_If you want to use AceBase, install it as well:_
``
npm i acebase
`ts
import { cache, adapterMemory } from 'prisma-cache-nosql';
const adapter = adapterMemory();
const prisma = new PrismaClient().$extends(
cache({
adapter
})
);
`
`ts
import { cache, adapterAceBase } from 'prisma-cache-nosql';
const storage = new AceBase('cache_db');
const adapter = adapterAceBase(storage);
await db.ready();
const prisma = new PrismaClient().$extends(
cache({
adapter
})
);
`
By default, Prisma will work the same and no value will be cached. If you want to start using the cache, you need to provide some configuration, that may look like this:
`ts`
{
// If provided, the result of this query will be saved in cache.
// Can also be set: true
set: {
// Time-To-Live in ms
ttl: 1000 * 60,
},
// If provided, a cached value will be used if a non expired one is found
// Can also be get: true
get: {
// Max cache age in ms
max: 1000 60 5
}
}
This can be done in three different scopes:
This configuration has the less priority. It will be used where no others were specified.
`ts
// ...
const prisma = new PrismaClient().$extends(
cache({
default: {
// Here
}
})
);
`
This one will be used for a specific model.
`ts
// ...
const prisma = new PrismaClient().$extends(
cache({
models: {
myModel: {
// Here
}
}
})
);
`
The most specific one, will be prioritized over all the others:
`ts`
const result = await prisma.model.findFirst({
cache: {
// Here
}
});
The following methods can be used with cache:
- findUniquefindUniqueOrThrow
- findFirst
- findFirstOrThrow
- findMany
- count
- aggregate
- groupBy
-
- adapter: the storage adapter to use.logLevel
- : determines the messages logged. Can be debug, log, warn, error.default
- : default cache configuration.models
- : models specific cache configuration.
Setup the tests db using npm run test:push-schema and generate Prisma test client with npm run test:generate-client.
Run the tests using npm run test.
Please, commit using commitizen so that semantic-release will be able to automatically determine the new package version:
```
git czor
npm run commit