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}/`)