print pdfs and send mails with ics file
This commit is contained in:
parent
5f827fb177
commit
728c4e05fa
12 changed files with 461 additions and 183 deletions
|
@ -279,4 +279,91 @@ export default abstract class DynamicQueryBuilder {
|
|||
|
||||
return flattenedResults;
|
||||
}
|
||||
|
||||
public static async executeQuery(
|
||||
query: string | DynamicQueryStructure,
|
||||
offset: number,
|
||||
count: number
|
||||
): Promise<
|
||||
| {
|
||||
stats: "error";
|
||||
sql: string;
|
||||
code: string;
|
||||
msg: string;
|
||||
}
|
||||
| {
|
||||
stats: "success";
|
||||
rows: Array<{ [key: string]: FieldType }>;
|
||||
total: number;
|
||||
offset: number;
|
||||
count: number;
|
||||
}
|
||||
> {
|
||||
if (typeof query == "string") {
|
||||
const upperQuery = query.trim().toUpperCase();
|
||||
if (!upperQuery.startsWith("SELECT") || /INSERT|UPDATE|DELETE|ALTER|DROP|CREATE|TRUNCATE/.test(upperQuery)) {
|
||||
return {
|
||||
stats: "error",
|
||||
sql: query,
|
||||
code: "UNALLOWED",
|
||||
msg: "Not allowed to change rows",
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
let data: Array<any> = [];
|
||||
|
||||
return 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,
|
||||
};
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
return {
|
||||
stats: "error",
|
||||
sql: error.sql,
|
||||
code: error.code,
|
||||
msg: error.sqlMessage,
|
||||
};
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
let [rows, total] = await this.buildQuery(query, offset, count).getManyAndCount();
|
||||
|
||||
return {
|
||||
stats: "success",
|
||||
rows: this.flattenQueryResult(rows),
|
||||
total: total,
|
||||
offset: offset,
|
||||
count: count,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
stats: "error",
|
||||
sql: error.sql,
|
||||
code: error.code,
|
||||
msg: error.sqlMessage,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue