const http = require('http'),
    fs = require('fs'),
    ejs = require('ejs'),
    qs = require('querystring'),
    sqlite = require('sqlite3'),
    template = fs.readFileSync(__dirname + '/public_html/bbs1.ejs', 'utf-8'),
    db = new sqlite.Database(__dirname + '/public_html/bbs.sqlite'),
    server = http.createServer();

function renderForm(db, res, msg = null) {
    db.all('select * from bbs', (err, posts) => {
        const data = ejs.render(template, {
            posts: posts,
            msg:msg
        });
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.write(data);
        res.end();
    });
}

function insertData(query, db, res) {
    if(query.name !='' && query.comment != '') {
        db.run('insert into bbs (name, comment, data) values (?, ?, ?)',
        [query.name, query.comment, (new Date()).toLocaleDateString()]);
        renderForm(db, res);
    } else {
        renderForm(db, res, "名前とコメントを入力してください");
    }
}

db.serialize();
db.run('create table if not exists bbs (id integer primary key autoincrement, name, text, comment text, date text)');

server.on('request', (req, res) => {
    if(req.method == 'POST') {
        let data = "";
        req.on('data', x => data += x);
        req.on('end', () => insertData(qs.parse(data), db, res));
    } else {
        renderForm(db, res);
    }
});

server.listen(1337, 'localhost');
console.log("server listening...")