watcher-ts/packages/codegen/src/templates/server-template.handlebars
2022-11-25 17:19:37 +05:30

53 lines
1.3 KiB
Handlebars

//
// Copyright 2021 Vulcanize, Inc.
//
import fs from 'fs';
import path from 'path';
import 'reflect-metadata';
import debug from 'debug';
import { ServerCmd } from '@cerc-io/cli';
{{#if (subgraphPath)}}
import { getGraphDbAndWatcher } from '@cerc-io/graph-node';
{{/if}}
import { createResolvers } from './resolvers';
import { Indexer } from './indexer';
import { Database{{#if (subgraphPath)}}, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP{{/if}} } from './database';
const log = debug('vulcanize:server');
export const main = async (): Promise<any> => {
const serverCmd = new ServerCmd();
await serverCmd.init(Database);
{{#if (subgraphPath)}}
const { graphWatcher } = await getGraphDbAndWatcher(
serverCmd.config!.server,
serverCmd.clients!.ethClient,
serverCmd.ethProvider!,
serverCmd.database!.baseDatabase,
ENTITY_QUERY_TYPE_MAP,
ENTITY_TO_LATEST_ENTITY_MAP
);
{{/if}}
await serverCmd.initIndexer(Indexer{{#if (subgraphPath)}}, graphWatcher{{/if}});
const typeDefs = fs.readFileSync(path.join(__dirname, 'schema.gql')).toString();
return serverCmd.exec(createResolvers, typeDefs);
};
main().then(() => {
log('Starting server...');
}).catch(err => {
log(err);
});
process.on('SIGINT', () => {
log(`Exiting process ${process.pid} with code 0`);
process.exit(0);
});