//                _
//     o O O   _ | |   ___
//    o       | || |  / _ \
//   TS__[O]  _\__/   \___/
//  {======|_|"""""|_|"""""|
// ./o--000'"`-0-0-'"`-0-0-'
//
// Code written by «Johannes Reckers»
//------------------------------------------------>

//------------------------------------------------>
// Imports
//------------------------------------------------>

// Packages
const express = require("express");
const bodyParser = require("body-parser");
const mysql = require("mysql2");
const path = require("path");

// Config
const { databaseCredentials } = require("./Structures/Config/databaseCredentials");

// Load environment variables when not using docker
if (!process.env.DOCKER) {
  const dotenv = require("dotenv");
  dotenv.config();
}

//------------------------------------------------>
// Express initialization & configuration
//------------------------------------------------>

// Initialize the express instance
const app = express();

// Set views directory and engine
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "ejs");

//------------------------------------------------>
// Middlewares
//------------------------------------------------>

// Use body-parser and cookie-parser
app.use(bodyParser.urlencoded({ extended: false }));

//------------------------------------------------>
// Initialize database
//------------------------------------------------>

const db = mysql.createConnection(databaseCredentials);

db.connect((err) => {
  if (err) console.log(`[JET] Error occurred during initial connection: ${err}`);
  else console.log("[JET] Successfully connected to database");
});

db.end();

//------------------------------------------------>
// Routing
//------------------------------------------------>

const apiRouter = require("./routes/apiRoutes");
const indexRouter = require("./routes/indexRoutes");

app.use("/api", apiRouter);
app.use("/", indexRouter);

//------------------------------------------------>
// Start Express
//------------------------------------------------>

app.listen(process.env.PORT, () => {
  console.log(`[JET] started express on http://localhost:${process.env.PORT}`);
});