dok/routes/blackmarket.route.js
2026-04-07 15:06:47 +01:00

129 lines
2.5 KiB
JavaScript

const express = require("express");
const router = express.Router();
const db = require("../database/database");
const auth = require("../middleware/auth");
router.get("/pages", auth, async (req, res) => {
const userId = req.session.user.id;
try {
const [owned] = await db.query(
`
SELECT page
FROM user_inventory_pages
WHERE user_id = ?
ORDER BY page
`,
[userId],
);
const [prices] = await db.query(`
SELECT page, price
FROM inventory_page_prices
ORDER BY page
`);
const [[config]] = await db.query(`
SELECT config_value
FROM game_config
WHERE config_key = 'inventory_max_pages'
`);
const maxPages = config ? config.config_value : 8;
const ownedPages = owned.map((p) => p.page);
// Seite 1 ist immer kostenlos und gilt als besessen
if (!ownedPages.includes(1)) {
ownedPages.unshift(1);
}
res.json({
ownedPages: ownedPages,
prices: prices,
maxPages: maxPages,
});
} catch (err) {
console.error(err);
res.status(500).json({ error: "DB Fehler" });
}
});
router.post("/buy-page", auth, async (req, res) => {
const userId = req.session.user.id;
try {
const [[maxPage]] = await db.query(
`
SELECT MAX(page) AS page
FROM user_inventory_pages
WHERE user_id = ?
`,
[userId],
);
const nextPage = (maxPage.page || 1) + 1;
const [[priceRow]] = await db.query(
`
SELECT price
FROM inventory_page_prices
WHERE page = ?
`,
[nextPage],
);
if (!priceRow) {
return res.json({ error: "Max Seiten erreicht" });
}
const price = priceRow.price;
const [[currency]] = await db.query(
`
SELECT gold
FROM account_currency
WHERE account_id = ?
`,
[userId],
);
if (currency.gold < price) {
const missing = price - currency.gold;
return res.json({
error: "Nicht genug Gold",
gold: currency.gold,
price: price,
missing: missing,
});
}
await db.query(
`
UPDATE account_currency
SET gold = gold - ?
WHERE account_id = ?
`,
[price, userId],
);
await db.query(
`
INSERT INTO user_inventory_pages (user_id,page)
VALUES (?,?)
`,
[userId, nextPage],
);
res.json({
success: true,
page: nextPage,
});
} catch (err) {
console.error(err);
res.status(500).json({ error: "DB Fehler" });
}
});
module.exports = router;