const databaseQuery = 'SELECT * FROM `Exercise` WHERE ExerciseID = 1';
// const databaseQueryRand = 'SELECT * FROM `Exercise` ORDER BY RAND() LIMIT 1';

/**
 *
 * @param {Request} request The incoming request
 * @param {Response} response The response to send back
 * @param {Express} app Express app instance
 * @param {Pool} pool MariaDB pool instance
 */
function handleIncoming(request, response, app, pool)
{

    // Acquire database connection
    pool.getConnection()
        .then(conn => {
            conn.query(
                databaseQuery)
                .then(rows => {
                    if (rows.length === 0)
                    {
                        response
                            .status(404)
                            .send(JSON.stringify({error: 'No exercises found in the database.'}));
                    }
                    else
                    {
                        let row = rows[0];
                        response.status(200)
                            .send(JSON.stringify({
                                exerciseId: row['ExerciseID'],
                                name: row['Name'],
                                muscleGroup: row['MuscleGroup'],
                                shortDescription: row['ShortDescription'],
                                description: row['Description'],
                                imageUrl: row['ImageURL'],
                                videoUrl: row['VideoURL'],
                                path: row['Path'],
                                duration: row['Duration']
                            }))
                    }
                })
                .catch(error => {
                    console.log(error);
                    response
                        .status(500)
                        .send(JSON.stringify({error: 'Internal server error (Querying)'}));
                })
                .finally(() => {
                    conn.end();
                });
        })
        .catch(error => {
            console.log(error);
            response
                .status(500)
                .send(JSON.stringify({error: 'Internal server error (Connection)'}));
        });

}

// Export the function that registers the incoming request handlers
module.exports = function(app, pool) {
    app.post('/', (req, res) => handleIncoming(req, res, app, pool));
};