require('dotenv').config({ path: './process.env' });

const express = require("express");
const app = express();
const path = require('path');
const port = 3000;
const db = require("./db");
const poi = require("./modules/poi");


app.use(express.static(path.join(__dirname, '..', "public")));

// Crée une route spéciale pour les tiles
app.use('/tiles', express.static(path.join(__dirname, '..', 'tiles')));

// Définition de la route pour les tiles
app.get('/tiles/:z/:x/:y.png', (req, res) => {
    const z = req.params.z;
    const x = req.params.x;
    const y = req.params.y;
    const tilePath = path.join(__dirname, '..', 'tiles', `${z}/${x}/${y}.png`);
    res.sendFile(tilePath);
});

app.get("/characterloc", async (req, res) => {
    try {
        const characterPositions = await db.getCharacterPos();
        res.json(characterPositions);
    } catch (err) {
        console.error("Erreur lors de la récupération des positions des personnages:", err);
        res.status(500).send("Erreur interne");
    }
});

app.get("/npcloc", async (req, res) => {
    try {
        const npcPositions = await db.getNpcPos();
        res.json(npcPositions);
    } catch (err) {
        console.error("Erreur lors de la récupération des positions des NPC:", err);
        res.status(500).send("Erreur interne");
    }
});

app.get("/poi/:name", async (req, res) => {
    try {
        const name = req.params.name;
        const result = poi.initPoImarker(name);
        res.json(result);
    }
    catch (err) { 
        console.error("Erreur lors de la récupération des PoI:", err);
        res.status(500).send("Erreur interne");
    }
});

app.listen(port, () => {
    console.log(`Listening on port ${port}`);
});