const express = require('express'); const sqlite3 = require('sqlite3'); const cors = require('cors'); const app = express(); app.use(cors()); app.use(express.json()); function getDb() { return new sqlite3.Database('db.sqlite', (err) => { if (err) console.log('db error:', err); console.log('Connected to database!'); }); } const db = getDb(); db.run( `CREATE TABLE IF NOT EXISTS appointments ( id INTEGER PRIMARY KEY, date TEXT, time TEXT, name TEXT )`, (err) => { console.log('Table creation error:', err); } ); db.close(); app.post('/api/appointments', (req, res) => { const d = req.body; console.log('data:', d); const db = getDb(); db.run( 'INSERT INTO appointments (date, time, name) VALUES (?, ?, ?)', [d.date, d.time, d.name], function (err) { if (err) { console.log('error:', err); res.status(500).json({ msg: 'error' }); } else { db.all('SELECT * FROM appointments', [], (err, rows) => { if (err) { console.log('error:', err); res.status(500).json({ msg: 'error' }); } else { console.log('all data:', rows); res.json({ msg: 'ok', data: rows }); } db.close(); }); } } ); }); app.get('/api/slots', (req, res) => { const db = getDb(); db.all('SELECT * FROM appointments', [], (err, rows) => { let temp = []; for (let i = 28; i <= 29; i++) { for (let h = 13; h <= 17; h++) { for (let m = 0; m < 60; m += 30) { let d = `2024-02-${i}`; let t = `${h}:${m === 0 ? '00' : m}`; temp.push({ date: d, time: t }); } } } for (let i = 1; i <= 3; i++) { for (let h = 13; h <= 17; h++) { for (let m = 0; m < 60; m += 30) { let d = `2024-03-0${i}`; let t = `${h}:${m === 0 ? '00' : m}`; temp.push({ date: d, time: t }); } } } let available = temp.filter((slot) => { return !rows.some((r) => r.date === slot.date && r.time === slot.time); }); console.log('available slots:', available); res.json(available); db.close(); }); }); app.get('/api/appointments', (req, res) => { const db = getDb(); db.all('SELECT * FROM appointments', [], (err, rows) => { if (err) { console.log('error:', err); res.status(500).json({ msg: 'error' }); } else { console.log('all appointments:', rows); res.json(rows); } db.close(); }); }); app.listen(3000, () => console.log('Server running at http://localhost:3000'));