44 lines
986 B
JavaScript
44 lines
986 B
JavaScript
import express from 'express'
|
|
import exphbs from 'express-handlebars'
|
|
|
|
import sqlite3 from 'sqlite3'
|
|
import { open } from 'sqlite'
|
|
|
|
const dbPromise = open({
|
|
filename: 'data.db',
|
|
driver: sqlite3.Database
|
|
})
|
|
|
|
const app = express()
|
|
|
|
app.engine('handlebars', exphbs());
|
|
app.set('view engine', 'handlebars');
|
|
|
|
app.use(express.urlencoded())
|
|
|
|
app.get('/', async (req, res) => {
|
|
const db = await dbPromise;
|
|
const messages = await db.all('SELECT * FROM Message;')
|
|
res.render('home', { messages })
|
|
})
|
|
|
|
app.post('/message', async (req, res) => {
|
|
const db = await dbPromise
|
|
const messageText = req.body.messageText
|
|
await db.run('INSERT INTO Message (text) VALUES (?);', messageText)
|
|
res.redirect('/')
|
|
})
|
|
|
|
app.get('/time', (req, res) => {
|
|
res.send('the current time is ' + (new Date()).toLocaleTimeString())
|
|
})
|
|
|
|
const setup = async () => {
|
|
const db = await dbPromise
|
|
await db.migrate()
|
|
app.listen(8000, () => {
|
|
console.log('listening on localhost:8000')
|
|
})
|
|
}
|
|
setup()
|