22 lines
736 B
TypeScript
22 lines
736 B
TypeScript
|
import { type FastifyInstance } from 'fastify'
|
||
|
import fp from 'fastify-plugin'
|
||
|
import { type WorkerUtils, makeWorkerUtils } from 'graphile-worker'
|
||
|
|
||
|
type Options = {
|
||
|
connectionString: string;
|
||
|
}
|
||
|
|
||
|
|
||
|
export interface ExtendedFastifyInstance extends FastifyInstance {
|
||
|
graphile?: WorkerUtils
|
||
|
}
|
||
|
|
||
|
async function graphileWorkerPlugin (fastify: ExtendedFastifyInstance, opts: Options) {
|
||
|
if (!fastify.graphile) {
|
||
|
if (!opts.connectionString) throw new Error('graphileWorkerPlugin requires connectionString passed in options argument, but it was missing');
|
||
|
const workerUtils = await makeWorkerUtils({ connectionString: opts.connectionString })
|
||
|
fastify.decorate('graphile', workerUtils)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default fp(graphileWorkerPlugin)
|