1 |
|
2 | import { createError, handleErrors } from 'micro-boom';
|
3 | import { router, get, post } from 'microrouter';
|
4 | import makeCors from 'micro-cors';
|
5 | import micro from 'micro';
|
6 |
|
7 | import { createClient } from '../build/redis-client';
|
8 |
|
9 | const cors = makeCors();
|
10 |
|
11 | import type { Config } from '../types/Config.type';
|
12 | import commit from './commit';
|
13 | import subscribe from './subscribe';
|
14 | import query from './query'
|
15 |
|
16 | export default (config: Config) => {
|
17 | const statusClient = createClient(config.redis, { debug: true });
|
18 | const committer = commit(config);
|
19 | const {service: subscriber, unsubscribe} = subscribe(config);
|
20 | const querier = query(config);
|
21 |
|
22 | const service = handleErrors(cors(router(
|
23 | get('/subscribe', subscriber),
|
24 | post('/commit', committer),
|
25 | get('/query', querier),
|
26 | () => {
|
27 | throw createError(404)
|
28 | }
|
29 | )), config.debug);
|
30 |
|
31 | const server = micro(service);
|
32 |
|
33 | server.on('close', unsubscribe);
|
34 |
|
35 | return server;
|
36 | }
|