Revela-v4/middleware/ProxyExt/index.js

79 lines
2.4 KiB
JavaScript

import b from "express";
import { DataTypes as t, Sequelize as k } from "sequelize";
var A = new k("database", "user", "password", { host: "localhost", dialect: "sqlite", logging: !1, storage: "database.sqlite" }),
n = A.define("catalog_assets", {
package_name: { type: t.TEXT, unique: !0 },
title: { type: t.TEXT },
description: { type: t.TEXT },
author: { type: t.TEXT },
image: { type: t.TEXT },
tags: { type: t.JSON, allowNull: !0 },
version: { type: t.TEXT },
background_image: { type: t.TEXT, allowNull: !0 },
background_video: { type: t.TEXT, allowNull: !0 },
payload: { type: t.TEXT },
type: { type: t.TEXT },
});
n.sync();
async function c(p, s) {
try {
let a = p.query,
o = parseInt(a.page) || 1,
r = parseInt(a.amount) || 20,
u = await n.count(),
m = Math.ceil(u / r),
d = o < m;
if (o < 1) {
s.status(400).json({ error: "Invalid page number!" });
return;
}
if (parseInt(a.amount) < 10) {
s.status(400).json({ error: "Amount must be at least 10!" });
return;
}
let y = (o - 1) * r,
f = (await n.findAll({ offset: y, limit: 20 })).map((e) => e.get()),
T = {
assets: Object.fromEntries(
f.map((e) => [
e.package_name,
{
title: e.title,
description: e.description,
author: e.author,
image: e.image,
tags: e.tags,
version: e.version,
background_image: e.background_image,
background_video: e.background_video,
payload: e.payload,
type: e.type,
},
])
),
page: o.toString(),
nextPage: d,
amount: u,
};
s.send(T);
} catch (a) {
s.status(500).json({ error: a });
}
}
async function l(p, s) {
try {
let a = p.params.package,
o = await n.findOne({ where: { package_name: a } });
if (!o) return s.status(404).json({ error: "Package not found" });
let r = o.toJSON();
return delete r.id, delete r.createdAt, delete r.updatedAt, s.send(r);
} catch (a) {
return s.status(500).json({ error: a });
}
}
var i = { getCatalogAssets: c, getPackage: l };
var g = b.Router();
g.get("/api/catalog_assets", i.getCatalogAssets);
g.get("/api/packages/:package", i.getPackage);
var N = g;
export { N as default };