UNPKG

sqlite-gui-node

Version:
101 lines (83 loc) 3.19 kB
import express, { Request, Response, NextFunction } from "express"; import bodyParser from "body-parser"; import path from "path"; import databaseFunctions from "./Utils/databaseFunctions"; import logger from "./Utils/logger"; import tableRoutes from "./routes/tables"; import type { Database } from "sqlite3"; const app = express(); app.set("view engine", "ejs"); app.set("views", path.join(__dirname, "../views")); app.use(bodyParser.urlencoded({ extended: false })); app.use(express.static(path.join(__dirname, "../public"))); app.use(bodyParser.json()); // Routes app.get("/query", (req, res) => { res.render("query", { title: "Query Page" }); }); app.get("/home", (req, res) => { res.render("index", { title: "Home Page" }); }); app.get("/createtable", (req, res) => { res.render("createTable", { title: "Create Table Page" }); }); app.get("/insert/:table", (req, res) => { const tableName = req.params.table; res.render("insert", { tableName }); }); app.get("/edit/:table/:label/:id", (req, res) => { const tableName = req.params.table; const id = req.params.id; res.render("edit", { tableName, id }); }); // SqliteGuiNode function to run the app export async function SqliteGuiNode(db: Database, port = 8080) { await databaseFunctions.InitializeDB(db); app.use("/api/tables", tableRoutes(db)); app.listen(port, () => { logger.info( `SQLite Web Admin Tool running at http://localhost:${port}/home` ); }); } // SqliteGuiNode as middleware export function SqliteGuiNodeMiddleware(app: any, db: Database) { return async function (req: Request, res: Response, next: NextFunction) { try { await databaseFunctions.InitializeDB(db); app.set("view engine", "ejs"); app.set("views", path.join(__dirname, "../views")); app.use(bodyParser.urlencoded({ extended: false })); app.use(express.static(path.join(__dirname, "../public"))); app.use(bodyParser.json()); // Routes app.get("/query", (req: Request, res: Response) => { res.render("query", { title: "Query Page" }); }); app.get("/", (req: Request, res: Response) => { res.render("index", { title: "Home Page" }); }); app.get("/createtable", (req: Request, res: Response) => { res.render("createTable", { title: "Create Table Page" }); }); app.get("/insert/:table", (req: Request, res: Response) => { const tableName = req.params.table; res.render("insert", { tableName }); }); app.get("/edit/:table/:label/:id", (req: Request, res: Response) => { const tableName = req.params.table; const id = req.params.id; res.render("edit", { tableName, id }); }); app.use("/api/tables", tableRoutes(db)); // Add table routes app.get("/home", (req: Request, res: Response) => { res.render("index", { title: "Home Page" }); }); next(); // Proceed to the next middleware/route handler } catch (error) { // Handle any errors during DB initialization logger.error("Error initializing the database:", error); res.status(500).send("Error initializing the database."); } }; }