extend views with year count

This commit is contained in:
Julian Krauser 2025-01-05 16:09:39 +01:00
parent 91217d1e6e
commit d683bcb4c1
8 changed files with 133 additions and 107 deletions

View file

@ -38,71 +38,7 @@ export async function executeQuery(req: Request, res: Response): Promise<any> {
let count = parseInt((req.query.count as string) ?? "25");
const query = req.body.query;
if (typeof query == "string") {
const upperQuery = query.trim().toUpperCase();
if (!upperQuery.startsWith("SELECT") || /INSERT|UPDATE|DELETE|ALTER|DROP|CREATE|TRUNCATE/.test(upperQuery)) {
return res.json({
stats: "error",
sql: query,
code: "UNALLOWED",
msg: "Not allowed to change rows",
});
}
let result = await DynamicQueryBuilder.executeQuery(query, offset, count);
try {
let data: Array<any> = [];
const result = await dataSource
.transaction(async (manager) => {
data = await manager.query(query);
throw new Error("AllwaysRollbackQuery");
})
.catch((error) => {
if (error.message === "AllwaysRollbackQuery") {
return {
stats: "success",
rows: data,
total: data.length,
offset: offset,
count: count,
};
} else {
return {
stats: "error",
sql: error.sql,
code: error.code,
msg: error.sqlMessage,
};
}
});
res.send(result);
} catch (error) {
res.json({
stats: "error",
sql: error.sql,
code: error.code,
msg: error.sqlMessage,
});
}
} else {
try {
let [rows, total] = await DynamicQueryBuilder.buildQuery(query, offset, count).getManyAndCount();
res.json({
stats: "success",
rows: DynamicQueryBuilder.flattenQueryResult(rows),
total: total,
offset: offset,
count: count,
});
} catch (error) {
res.json({
stats: "error",
sql: error.sql,
code: error.code,
msg: error.sqlMessage,
});
}
}
res.json(result);
}