You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.5 KiB

const express = require('express')
const mysql = require('mysql-await');
const app = express()
const cors = require('cors');
app.use(cors());
app.use(express.json());
const mysqlConnection = mysql.createConnection({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PWD,
database: process.env.DB_NAME
});
mysqlConnection.connect()
app.get('/songs', async (req, res)=>{
const results = await mysqlConnection.awaitQuery("SELECT * FROM songs WHERE learned=True ORDER BY title ASC");
res.json(results)
})
app.get('/instruments', async (req, res)=>{
const results = await mysqlConnection.awaitQuery("SELECT * FROM instruments");
res.json(results)
})
app.get('/categories', async (req, res)=>{
const results = await mysqlConnection.awaitQuery("SELECT practice_categories.id, practice_categories.name AS category, instruments.name AS instrument FROM practice_categories JOIN instruments ON practice_categories.instrument_id = instruments.id ORDER BY practice_categories.id ASC");
res.json(results)
})
app.get('/summary', async (req, res)=>{
const results = await mysqlConnection.awaitQuery("SELECT * FROM summary ORDER BY chunks_practiced ASC");
res.json(results)
})
app.get('/status', async (req, res)=>{
const results = await mysqlConnection.awaitQuery("SELECT * FROM practice_status");
res.json({
seconds_practiced:results[0].seconds_practiced_today || 0,
seconds_left_to_practice_today:results[0].seconds_left || 0,
seconds_left_to_get_ahead:results[0].seconds_left_to_get_ahead || 0
})
})
app.listen(18080)