0.1.0 • Published 4d ago
sqlite-ejs-panel
Licence
MIT
Version
0.1.0
Deps
3
Size
32 kB
Vulns
0
Weekly
0
sqlite-ejs-panel
Small Express and EJS admin panel for SQLite-backed apps.
import { sqlite, panel, num, fail } from "sqlite-ejs-panel";
const db = sqlite("app.db");
class Service {
constructor(private db: any) {}
book(userId: number, itemId: number) {
if (!this.db.prepare("SELECT id FROM users WHERE id = ?").get(userId)) {
fail("User not found");
}
this.db.prepare("INSERT INTO bookings (user_id, item_id) VALUES (?, ?)").run(userId, itemId);
}
}
const service = new Service(db);
panel({
title: "Demo panel",
port: 3000,
db,
labels: {
home: "Main",
reports: "Reports",
reportsTitle: "SQL reports",
empty: "No data",
defaultSubmit: "Save"
},
logger: true,
form: {
title: "Create booking",
action: "/book",
submit: "Save",
fields: {
userId: "SELECT id, name FROM users",
itemId: "SELECT id, name FROM items"
},
onSubmit: (body) => service.book(num(body.userId), num(body.itemId))
},
views: {
"Bookings": "SELECT * FROM bookings"
},
reports: {
"Rows by user": "SELECT user_id, COUNT(*) AS total FROM bookings GROUP BY user_id"
}
});