1.0.1 • Published 4 years ago
apollo-server-cache-sql v1.0.1
Apollo Server SQL Cache driver
Minimalistic Apollo Server SQL Cache driver for times when Redis or other more modern caching solutions are too expensive or unavailable.
Installing
npm install --save-dev apollo-server-cache-sql
# or
yarn add -D apollo-server-cache-sql
Setup
A SQL table for cache artifact storage must be created. The following is a blueprint for a basic caching table.
CREATE TABLE `cache` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`key` varchar(255) DEFAULT NULL,
`value` longtext,
`ttl` int(11) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `key` (`key`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Usage
import mysql from 'mysql';
import { SqlCache } from 'apollo-server-cache-sql';
// Setup the connection client
const connection = mysql.createConnection({
host: 'localhost',
user: 'me',
password: 'secret',
database: 'my_db',
});
connection.connect();
// Setup Apollo Server with SQL cache driver
const server = new ApolloServer({
typeDefs,
resolvers,
cache: new SqlCache({
client: connection,
databaseName: 'my_db',
tableName: 'cache',
}),
dataSources: () => ({
moviesAPI: new MoviesAPI(),
}),
});
Usage with full-query caching
import mysql from 'mysql';
import { SqlCache } from 'apollo-server-cache-sql';
import responseCachePlugin from 'apollo-server-plugin-response-cache';
// Setup the connection client
const connection = mysql.createConnection({
host: 'localhost',
user: 'me',
password: 'secret',
database: 'my_db',
});
connection.connect();
// Setup Apollo Server with SQL cache driver
const server = new ApolloServer({
// ...
plugins: [
responseCachePlugin({
cache: new SqlCache({
client: connection,
databaseName: 'my_db',
tableName: 'cache',
}),
}),
],
});