Apollo Server SQL Cache driver
![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)
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
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';
const connection = mysql.createConnection({
host: 'localhost',
user: 'me',
password: 'secret',
database: 'my_db',
});
connection.connect();
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';
const connection = mysql.createConnection({
host: 'localhost',
user: 'me',
password: 'secret',
database: 'my_db',
});
connection.connect();
const server = new ApolloServer({
plugins: [
responseCachePlugin({
cache: new SqlCache({
client: connection,
databaseName: 'my_db',
tableName: 'cache',
}),
}),
],
});