/ src / server / index.js
index.js
 1  const log = require('loglevel')
 2  const logPrefix = require('@natlibfi/loglevel-message-prefix')
 3  const Logger = require('koa-logger')
 4  const Knex = require('knex')
 5  const { Model } = require('objection')
 6  const { graphql } = require('graphql')
 7  const { builder } = require('objection-graphql')
 8  
 9  const DB = require('./db')
10  const App = require('./app')
11  const conf = require('./config')
12  const DiffManager = require('./DiffManager')
13  const DiffoScope = require('./diffoscope')
14  
15  /* set the logging level (TRACE, DEBUG, INFO, WARN, ERROR, SILENT) */
16  log.setDefaultLevel(log.levels[conf.LOG_LEVEL])
17  logPrefix(log, {prefixFormat:'%p:'})
18  
19  /* Define connection to the DataBase */
20  const knex = Knex({
21    client: 'sqlite3',
22    debug: false,
23    useNullAsDefault: true,
24    connection: { filename: conf.DB_PATH },
25    migrations: { tableName: 'migrations' },
26    log: { warn: log.warn, error: log.error, info: log.info },
27  })
28  
29  /* Give the knex object to objection */
30  Model.knex(knex)
31  
32  /* Define the GraphQL schema */
33  const gQLschema = builder()
34    .model(DB.Diff)
35    .model(DB.Build)
36    .build()
37  
38  const dos = new DiffoScope(conf.DIFFS_PATH, conf.TEMP_PATH)
39  const diffmgr = new DiffManager(dos)
40  const app = App(diffmgr, gQLschema)
41  
42  app.use(Logger())
43  
44  app.listen(conf.LISTEN_PORT)
45  
46  console.log(`Started at: http://localhost:${conf.LISTEN_PORT}/`)