prisma-cache-nosql
v1.0.9
Published
<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
Downloads
14
Readme
prisma-cache-nosql
A Prisma extension to store queries results in a temporary NoSQL cache. Currently supported storage options are standard memory and AceBase.
Getting Started
Installation
Using npm
:
npm i prisma-cache-nosql
If you want to use AceBase, install it as well:
npm i acebase
Setup with RAM
import { cache, adapterMemory } from 'prisma-cache-nosql';
const adapter = adapterMemory();
const prisma = new PrismaClient().$extends(
cache({
adapter
})
);
Setup with AceBase
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
})
);
Configuration
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:
{
// 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:
Global
This configuration has the less priority. It will be used where no others were specified.
// ...
const prisma = new PrismaClient().$extends(
cache({
default: {
// Here
}
})
);
Per Model
This one will be used for a specific model.
// ...
const prisma = new PrismaClient().$extends(
cache({
models: {
myModel: {
// Here
}
}
})
);
Per Query
The most specific one, will be prioritized over all the others:
const result = await prisma.model.findFirst({
cache: {
// Here
}
});
Supported Methods
The following methods can be used with cache:
findUnique
findUniqueOrThrow
findFirst
findFirstOrThrow
findMany
count
aggregate
groupBy
API
cache(opts)
adapter
: the storage adapter to use.logLevel
: determines the messages logged. Can bedebug
,log
,warn
,error
.default
: default cache configuration.models
: models specific cache configuration.
Development
Runnings Tests
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
.
Committing
Please, commit using commitizen so that semantic-release will be able to automatically determine the new package version:
git cz
# or
npm run commit