Files
TriggerBackend/triggerBackend.cjs

301 lines
7.8 KiB
JavaScript

require("dotenv").config();
const express = require("express");
const cors = require("cors");
const mariadb = require("mariadb");
const bodyParser = require("body-parser");
const multer = require("multer");
const pool = mariadb.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASS,
port: process.env.DB_PORT,
connectionLimit: 5,
});
module.exports = { pool };
const {
getPersonalData,
updatePersonalData,
getGuacamoleHost,
getGuacamoleEnabled,
getWolEnabled,
} = require("./commands/personalData.cjs");
const {
getMessages,
getDisplayedGreeting,
createMessage,
updateMessage,
deleteMessage,
} = require("./commands/messageData.cjs");
const {
getApplications,
getEnabledApplications,
createApplication,
updateApplication,
deleteApplication,
getAppCategories,
updateApplicationOrder,
} = require("./commands/applicationData.cjs");
const {
getBookmarks,
createBookmark,
updateBookmark,
deleteBookmark,
updateBookmarkOrder,
getBookmarkCategories,
createBookmarkCategory,
updateBookmarkCategory,
deleteBookmarkCategory,
updateBookmarkCategoryOrder,
} = require("./commands/bookmarkData.cjs");
const {
getProviders,
getDefaultProvider,
createProvider,
updateProvider,
deleteProvider,
} = require("./commands/providerData.cjs");
const {
getThemes,
createTheme,
updateTheme,
deleteTheme,
getThemePlaylists,
createThemePlaylist,
updateThemePlaylist,
deleteThemePlaylist,
getBackgrounds,
addBackground,
updateBackground,
deleteBackground,
} = require("./commands/themeData.cjs");
const {
getWolClients,
createWolClient,
updateWolClient,
deleteWolClient,
wakeWolClient,
} = require("./commands/wolData.cjs");
const {
getGuacamoleClients,
createGuacamoleClient,
updateGuacamoleClient,
deleteGuacamoleClient,
} = require("./commands/guacamoleData.cjs");
const {
getSearchHistory,
createSearchHistoryItem,
deleteSearchHistoryItem,
} = require("./commands/SearchData.cjs");
const storage = multer.diskStorage({
destination: (_req, _file, cb) => {
cb(null, "../TriggerFrontend/backgrounds/");
},
filename: (_req, file, cb) => {
cb(null, file.originalname);
},
});
const uploads = multer({ storage: storage });
const app = express();
app.use(cors());
app.use(bodyParser.json({ limit: "50mb" }));
app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));
app.use(
`/${process.env.API_URI}/api/backgroundImages`,
express.static("../TriggerFrontend/backgrounds"),
);
//////////////////////////////////////////////
// Personal Data //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/personalData`, getPersonalData);
app.get(`/${process.env.API_URI}/api/guacamoleHost`, getGuacamoleHost);
app.get(`/${process.env.API_URI}/api/guacamoleEnabled`, getGuacamoleEnabled);
app.get(`/${process.env.API_URI}/api/wolEnabled`, getWolEnabled);
app.patch(`/${process.env.API_URI}/api/personalData`, updatePersonalData);
//////////////////////////////////////////////
// Messages //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/messages`, getMessages);
app.get(`/${process.env.API_URI}/api/displayedGreeting`, getDisplayedGreeting);
app.post(`/${process.env.API_URI}/api/messages`, createMessage);
app.patch(`/${process.env.API_URI}/api/messages`, updateMessage);
app.delete(`/${process.env.API_URI}/api/messages`, deleteMessage);
//////////////////////////////////////////////
// Application Data //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/applications`, getApplications);
app.get(
`/${process.env.API_URI}/api/enabledApplications`,
getEnabledApplications,
);
app.post(`/${process.env.API_URI}/api/applications`, createApplication);
app.patch(`/${process.env.API_URI}/api/applications`, updateApplication);
app.delete(`/${process.env.API_URI}/api/applications`, deleteApplication);
app.get(`/${process.env.API_URI}/api/appCategories`, getAppCategories);
app.patch(
`/${process.env.API_URI}/api/applicationOrder`,
updateApplicationOrder,
);
//////////////////////////////////////////////
// Bookmark Data //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/bookmarks`, getBookmarks);
app.post(`/${process.env.API_URI}/api/bookmarks`, createBookmark);
app.patch(`/${process.env.API_URI}/api/bookmarks`, updateBookmark);
app.delete(`/${process.env.API_URI}/api/bookmarks`, deleteBookmark);
app.patch(`/${process.env.API_URI}/api/bookmarkOrder`, updateBookmarkOrder);
app.get(
`/${process.env.API_URI}/api/bookmarkCategories`,
getBookmarkCategories,
);
app.post(
`/${process.env.API_URI}/api/bookmarkCategories`,
createBookmarkCategory,
);
app.patch(
`/${process.env.API_URI}/api/bookmarkCategories`,
updateBookmarkCategory,
);
app.delete(
`/${process.env.API_URI}/api/bookmarkCategories`,
deleteBookmarkCategory,
);
app.patch(
`/${process.env.API_URI}/api/bookmarkCategoryOrder`,
updateBookmarkCategoryOrder,
);
//////////////////////////////////////////////
// Provider Data //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/providers`, getProviders);
app.get(`/${process.env.API_URI}/api/providers/default`, getDefaultProvider);
app.post(`/${process.env.API_URI}/api/providers`, createProvider);
app.patch(`/${process.env.API_URI}/api/providers`, updateProvider);
app.delete(`/${process.env.API_URI}/api/providers`, deleteProvider);
//////////////////////////////////////////////
// Theming //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/themes`, getThemes);
app.post(`/${process.env.API_URI}/api/themes`, createTheme);
app.patch(`/${process.env.API_URI}/api/themes`, updateTheme);
app.delete(`/${process.env.API_URI}/api/themes`, deleteTheme);
app.get(`/${process.env.API_URI}/api/themePlaylists`, getThemePlaylists);
app.post(`/${process.env.API_URI}/api/themePlaylists`, createThemePlaylist);
app.patch(`/${process.env.API_URI}/api/themePlaylists`, updateThemePlaylist);
app.delete(`/${process.env.API_URI}/api/themePlaylists`, deleteThemePlaylist);
app.get(`/${process.env.API_URI}/api/backgrounds`, getBackgrounds);
app.post(
`/${process.env.API_URI}/api/backgrounds`,
uploads.single("background"),
addBackground,
);
app.patch(`/${process.env.API_URI}/api/backgrounds`, updateBackground);
app.delete(`/${process.env.API_URI}/api/backgrounds`, deleteBackground);
//////////////////////////////////////////////
// Wake on LAN Clients //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/wolClients`, getWolClients);
app.post(`/${process.env.API_URI}/api/wolClients`, createWolClient);
app.patch(`/${process.env.API_URI}/api/wolClients`, updateWolClient);
app.delete(`/${process.env.API_URI}/api/wolClients`, deleteWolClient);
app.post(`/${process.env.API_URI}/api/wakeClient`, wakeWolClient);
//////////////////////////////////////////////
// Guacamole Clients //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/guacamoleClients`, getGuacamoleClients);
app.post(`/${process.env.API_URI}/api/guacamoleClients`, createGuacamoleClient);
app.patch(
`/${process.env.API_URI}/api/guacamoleClients`,
updateGuacamoleClient,
);
app.delete(
`/${process.env.API_URI}/api/guacamoleClients`,
deleteGuacamoleClient,
);
//////////////////////////////////////////////
// Search //
//////////////////////////////////////////////
app.get(`/${process.env.API_URI}/api/searchHistory`, getSearchHistory);
app.post(`/${process.env.API_URI}/api/searchHistory`, createSearchHistoryItem);
app.delete(
`/${process.env.API_URI}/api/searchHistory`,
deleteSearchHistoryItem,
);
app.listen(process.env.API_PORT, "0.0.0.0", () => {});