diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..37441be --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "files.eol": "\n" +} \ No newline at end of file diff --git a/core/models/question.js b/core/models/question.js index 7e8ae83..cd1ca2a 100644 --- a/core/models/question.js +++ b/core/models/question.js @@ -5,10 +5,6 @@ const Database = require('sqlite-async') const dbName = 'server.db' module.exports = class Question { - example() { - return 'this is an example' - } - async getAllQuestions(query) { try { let sql = 'SELECT id, title, question FROM Questions;' @@ -27,5 +23,15 @@ module.exports = class Question { } } - + async insertQuestion(request) { + console.log(request.body) + const body = request.body + const sql = `INSERT INTO Questions(title, question) + VALUES("${body.title}", "${body.question}");` + console.log(sql) + const db = await Database.open(dbName) + await db.run(sql) + await db.close() + } + } diff --git a/core/routes.js b/core/routes.js index cf25969..e69de29 100644 --- a/core/routes.js +++ b/core/routes.js @@ -1,44 +0,0 @@ -'use strict' - -const Router = require('koa-router') -const Question = require('./models/question') - -//temp -const Database = require('sqlite-async') -const handlebars = require('koa-hbs-renderer') -const dbName = 'server.db' -// - -const router = new Router() -const question = new Question() - -/* -router.get('/', async ctx => await ctx.render('home', {title: 'Home'})) -*/ - -//temp -router.get('/', async ctx => { - const data = await question.getAllQuestions(ctx.query) - console.log(data) - await ctx.render('home', {Questions: data,title: 'Home'}) -}) - -router.post('/insertquestion', async ctx => { - try { - console.log(ctx.request.body) - const body = ctx.request.body - const sql = `INSERT INTO Questions(title, question) - VALUES("${body.title}", "${body.question}");` - console.log(sql) - const db = await Database.open(dbName) - await db.run(sql) - await db.close() - ctx.redirect('/') - } catch(err) { - ctx.body = err.message - } -}) - -router.get('/createquestion', async ctx => ctx.render('createquestion')) - -module.exports = router diff --git a/core/routes/questionRoutes.js b/core/routes/questionRoutes.js new file mode 100644 index 0000000..290d49c --- /dev/null +++ b/core/routes/questionRoutes.js @@ -0,0 +1,31 @@ +'use strict' + +const Router = require('koa-router') +const Question = require('../models/question') + +const router = new Router() +const question = new Question() + + +router.get('/', async ctx => { + try{ + const data = await question.getAllQuestions(ctx.query) + console.log(data) + await ctx.render('home', {Questions: data,title: 'Home'}) + }catch(err) { + await ctx.render('error', {message: err.message}) + } +}) + +router.post('/insertquestion', async ctx => { + try{ + await question.insertQuestion(ctx.request) + ctx.redirect('/') + }catch(err) { + await ctx.render('error', {message: err.message}) + } +}) + +router.get('/createquestion', async ctx => ctx.render('createquestion')) + +module.exports = router diff --git a/core/views/error.hbs b/core/views/error.hbs new file mode 100644 index 0000000..ca1e11b --- /dev/null +++ b/core/views/error.hbs @@ -0,0 +1,12 @@ + + + + + + ERROR + + +

An Error Has Occurred

+

{{message}}

+ + \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..3d314ad --- /dev/null +++ b/index.js @@ -0,0 +1,6 @@ +'use strict' + +require('dotenv').config() +const app = require('./server') + +app.listen(process.env.SERVER_PORT, () => console.log(`Server running on ${process.env.SERVER_PORT}...`)) diff --git a/server.js b/server.js index 4019292..855fcaf 100644 --- a/server.js +++ b/server.js @@ -1,23 +1,20 @@ 'use strict' -require('dotenv').config() const Koa = require('koa') const views = require('koa-views') - -//temp -const stat = require('koa-static') +const serve = require('koa-static') const koaBody = require('koa-body') -// -const Router = require('./core/routes') +/* +const exampleRoutes = require('./core/routes/exampleRoutes') +const answerRoutes = require('./core/routes/answerRoutes') +*/ + +const questionRoutes = require('./core/routes/questionRoutes') const app = new Koa() -const port = process.env.SERVER_PORT -//temp -app.use(stat('public')) app.use(koaBody()) -// app.use(views(`${__dirname}/core/views`, { @@ -31,7 +28,17 @@ app.use(views(`${__dirname}/core/views`, map: { hbs: 'handlebars' } })) -app.use(Router.routes()) -app.use(Router.allowedMethods()) +app.use(serve('public')) + +/* +app.use(exampleRoutes.routes()) +app.use(exampleRoutes.allowedMethods()) + +app.use(answerRoutes.routes()) +app.use(answerRoutes.allowedMethods()) +*/ + +app.use(questionRoutes.routes()) +app.use(questionRoutes.allowedMethods()) -app.listen(port, () => console.log(`Server running on ${port}...`)) +module.exports = app