feat: functional /mods endpoint (getAllMods)

This commit is contained in:
Gu://em_ 2025-03-28 23:06:21 +01:00
parent 0ee5eedcfd
commit eb4be67c89
10 changed files with 55 additions and 9 deletions

4
.gitignore vendored
View file

@ -134,3 +134,7 @@ dist
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# Temporary
tests/

View file

@ -35,6 +35,7 @@ console.debug("Port: ", port);
// Database connection
db = getDatabase(config.database);
db.connect();
// --- Routing ---

View file

14
src/controllers/mods.js Normal file
View file

@ -0,0 +1,14 @@
const mod_service = require("../services/modService")
async function getAllMods(req, res) {
try {
console.debug("Calling controller");
const query_result = await mod_service.getAllMods();
console.debug("Controller OK");
return res.json(query_result);
} catch (error) {
return res.status(500).json({ error: error.message });
}
}
module.exports = {getAllMods};

View file

@ -1,13 +1,15 @@
// TODO promisify
const sqlite = require("better-sqlite3");
class SQLiteDatabase {
constructor(config) {
const sqlite = require("better-sqlite3");
this.config = config;
this.db = null;
}
async connect() {
try {
const db = new sqlite("./data/sqlite.db")
this.db = new sqlite("./data/sqlite.db")
// db.pragma("journal_mode = WAL")
console.log("Connected to SQLite");
} catch (err) {

View file

@ -1,11 +1,12 @@
// const db = require("...");
async function getAllMods() {
console.debug("Calling model");
return db.query("SELECT * FROM mods");
}
async function getModsByName(name) {
return db.query("SELECT * FROM mods WHERE name = ?", [name]);
async function getModByName(name) {
return db.query("SELECT display_name FROM mods WHERE name = ?", [name]);
}
// --- WIP ---
@ -16,10 +17,17 @@ async function createMod(mod_data) {
return db.query("INSERT INTO mods (name, description) VALUES (?, ?)", [name, description]);
}
async function updateMod(mod_data) {
console.log("WARNING: using a WIP function : updateMod (models/mods.js)")
throw new Error("Not implemented");
// const { name, description } = mod_data;
// return db.query("INSERT INTO mods (name, description) VALUES (?, ?)", [name, description]);
}
async function deleteMod(name) {
console.log("WARNING: using a WIP function : deleteMod (models/mods.js)")
return db.query("DELETE FROM mods WHERE name = ?", [name]);
}
module.exports = { getAllMods, getModsByName }
module.exports = { getAllMods, getModByName }

0
src/models/modpack.js Normal file
View file

View file

@ -1,11 +1,20 @@
const express = require("express");
const controller = require("../controllers/mods");
const router = express.Router();
// List mods
router.get("/list", async (req,res) => {
router.get("/", async (req,res) => {
console.debug("Accessing mods list");
res.send("No list yet");
res.send(controller.getAllMods());
// res.send("No list yet");
});
router.get("/:name", async (req,res) => {
const name = req.params.name;
console.debug("Accessing mod " + name)
res.send("Not implemented");
// res.send(name + " is not there yet");
})
module.exports = router;

View file

@ -0,0 +1,8 @@
const model = require("../models/mod");
async function getAllMods() {
console.debug("Calling service");
return model.getAllMods();
}
module.exports = { getAllMods };