sqlite-gui-node
Version:
GUI for Node js SQLite databases
101 lines (83 loc) • 3.19 kB
text/typescript
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.");
}
};
}