Compare commits

..

No commits in common. "main" and "v1.7.2" have entirely different histories.
main ... v1.7.2

26 changed files with 72 additions and 134 deletions

94
package-lock.json generated
View file

@ -1,19 +1,19 @@
{ {
"name": "ff-admin-server", "name": "ff-admin-server",
"version": "1.7.6", "version": "1.7.2",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ff-admin-server", "name": "ff-admin-server",
"version": "1.7.6", "version": "1.7.2",
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"dependencies": { "dependencies": {
"cors": "^2.8.5", "cors": "^2.8.5",
"crypto": "^1.0.1", "crypto": "^1.0.1",
"dotenv": "^17.2.0", "dotenv": "^17.2.0",
"express": "^5.1.0", "express": "^5.1.0",
"express-rate-limit": "^8.0.1", "express-rate-limit": "^7.5.1",
"express-validator": "^7.2.1", "express-validator": "^7.2.1",
"handlebars": "^4.7.8", "handlebars": "^4.7.8",
"helmet": "^8.1.0", "helmet": "^8.1.0",
@ -23,14 +23,14 @@
"lodash.clonedeep": "^4.5.0", "lodash.clonedeep": "^4.5.0",
"lodash.uniqby": "^4.7.0", "lodash.uniqby": "^4.7.0",
"moment": "^2.30.1", "moment": "^2.30.1",
"morgan": "^1.10.1", "morgan": "^1.10.0",
"ms": "^2.1.3", "ms": "^2.1.3",
"multer": "^2.0.2", "multer": "^2.0.1",
"node-schedule": "^2.1.1", "node-schedule": "^2.1.1",
"nodemailer": "^7.0.5", "nodemailer": "^7.0.5",
"pdf-lib": "^1.17.1", "pdf-lib": "^1.17.1",
"pg": "^8.16.3", "pg": "^8.16.3",
"puppeteer": "^24.14.0", "puppeteer": "^24.12.1",
"qrcode": "^1.5.4", "qrcode": "^1.5.4",
"reflect-metadata": "^0.2.2", "reflect-metadata": "^0.2.2",
"rss-parser": "^3.13.0", "rss-parser": "^3.13.0",
@ -52,7 +52,7 @@
"@types/morgan": "^1.9.10", "@types/morgan": "^1.9.10",
"@types/ms": "^2.1.0", "@types/ms": "^2.1.0",
"@types/multer": "^2.0.0", "@types/multer": "^2.0.0",
"@types/node": "^24.0.15", "@types/node": "^24.0.13",
"@types/node-schedule": "^2.1.8", "@types/node-schedule": "^2.1.8",
"@types/nodemailer": "^6.4.17", "@types/nodemailer": "^6.4.17",
"@types/pg": "~8.15.4", "@types/pg": "~8.15.4",
@ -744,9 +744,9 @@
} }
}, },
"node_modules/@puppeteer/browsers": { "node_modules/@puppeteer/browsers": {
"version": "2.10.6", "version": "2.10.5",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.6.tgz", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.5.tgz",
"integrity": "sha512-pHUn6ZRt39bP3698HFQlu2ZHCkS/lPcpv7fVQcGBSzNNygw171UXAKrCUhy+TEMw4lEttOKDgNpb04hwUAJeiQ==", "integrity": "sha512-eifa0o+i8dERnngJwKrfp3dEq7ia5XFyoqB17S4gK8GhsQE4/P8nxOfQSE0zQHxzzLo/cmF+7+ywEQ7wK7Fb+w==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"debug": "^4.4.1", "debug": "^4.4.1",
@ -754,7 +754,7 @@
"progress": "^2.0.3", "progress": "^2.0.3",
"proxy-agent": "^6.5.0", "proxy-agent": "^6.5.0",
"semver": "^7.7.2", "semver": "^7.7.2",
"tar-fs": "^3.1.0", "tar-fs": "^3.0.8",
"yargs": "^17.7.2" "yargs": "^17.7.2"
}, },
"bin": { "bin": {
@ -966,9 +966,9 @@
} }
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "24.0.15", "version": "24.0.13",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.15.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.13.tgz",
"integrity": "sha512-oaeTSbCef7U/z7rDeJA138xpG3NuKc64/rZ2qmUFkFJmnMsAPaluIifqyWd8hSSMxyP9oie3dLAqYPblag9KgA==", "integrity": "sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~7.8.0" "undici-types": "~7.8.0"
@ -1686,9 +1686,9 @@
} }
}, },
"node_modules/chromium-bidi": { "node_modules/chromium-bidi": {
"version": "7.1.1", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-7.1.1.tgz", "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-5.1.0.tgz",
"integrity": "sha512-L2BKQ0rSLADgbPMIdDh3wnYHs3EiUiMay2Sq0CTolheaADmWIf6Pe+T9LJRcnh5rcMz0U7MVk0cQVvKsGRMa1g==", "integrity": "sha512-9MSRhWRVoRPDG0TgzkHrshFSJJNZzfY5UFqUMuksg7zL1yoZIZ3jLB0YAgHclbiAxPI86pBnwDX1tbzoiV8aFw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"mitt": "^3.0.1", "mitt": "^3.0.1",
@ -2483,13 +2483,10 @@
} }
}, },
"node_modules/express-rate-limit": { "node_modules/express-rate-limit": {
"version": "8.0.1", "version": "7.5.1",
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.0.1.tgz", "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz",
"integrity": "sha512-aZVCnybn7TVmxO4BtlmnvX+nuz8qHW124KKJ8dumsBsmv5ZLxE0pYu7S2nwyRBGHHCAzdmnGyrc5U/rksSPO7Q==", "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==",
"license": "MIT", "license": "MIT",
"dependencies": {
"ip-address": "10.0.1"
},
"engines": { "engines": {
"node": ">= 16" "node": ">= 16"
}, },
@ -2500,15 +2497,6 @@
"express": ">= 4.11" "express": ">= 4.11"
} }
}, },
"node_modules/express-rate-limit/node_modules/ip-address": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz",
"integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==",
"license": "MIT",
"engines": {
"node": ">= 12"
}
},
"node_modules/express-validator": { "node_modules/express-validator": {
"version": "7.2.1", "version": "7.2.1",
"resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.2.1.tgz", "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.2.1.tgz",
@ -3685,16 +3673,16 @@
} }
}, },
"node_modules/morgan": { "node_modules/morgan": {
"version": "1.10.1", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
"integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"basic-auth": "~2.0.1", "basic-auth": "~2.0.1",
"debug": "2.6.9", "debug": "2.6.9",
"depd": "~2.0.0", "depd": "~2.0.0",
"on-finished": "~2.3.0", "on-finished": "~2.3.0",
"on-headers": "~1.1.0" "on-headers": "~1.0.2"
}, },
"engines": { "engines": {
"node": ">= 0.8.0" "node": ">= 0.8.0"
@ -3734,9 +3722,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/multer": { "node_modules/multer": {
"version": "2.0.2", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.1.tgz",
"integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", "integrity": "sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"append-field": "^1.0.0", "append-field": "^1.0.0",
@ -3984,9 +3972,9 @@
} }
}, },
"node_modules/on-headers": { "node_modules/on-headers": {
"version": "1.1.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 0.8" "node": ">= 0.8"
@ -4522,17 +4510,17 @@
} }
}, },
"node_modules/puppeteer": { "node_modules/puppeteer": {
"version": "24.14.0", "version": "24.12.1",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.14.0.tgz", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.12.1.tgz",
"integrity": "sha512-GB7suRDkp9pUnxpNGAORICQCtw11KFbg6U2iJXVTflzJLK5D1qzq8xOOmLgN/QnDBpDMdpn96ri52XkuN83Giw==", "integrity": "sha512-+vvwl+Xo4z5uXLLHG+XW8uXnUXQ62oY6KU6bEFZJvHWLutbmv5dw9A/jcMQ0fqpQdLydHmK0Uy7/9Ilj8ufwSQ==",
"hasInstallScript": true, "hasInstallScript": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@puppeteer/browsers": "2.10.6", "@puppeteer/browsers": "2.10.5",
"chromium-bidi": "7.1.1", "chromium-bidi": "5.1.0",
"cosmiconfig": "^9.0.0", "cosmiconfig": "^9.0.0",
"devtools-protocol": "0.0.1464554", "devtools-protocol": "0.0.1464554",
"puppeteer-core": "24.14.0", "puppeteer-core": "24.12.1",
"typed-query-selector": "^2.12.0" "typed-query-selector": "^2.12.0"
}, },
"bin": { "bin": {
@ -4543,13 +4531,13 @@
} }
}, },
"node_modules/puppeteer-core": { "node_modules/puppeteer-core": {
"version": "24.14.0", "version": "24.12.1",
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.14.0.tgz", "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.12.1.tgz",
"integrity": "sha512-NO9XpCl+i8oB0zJp81iPhzMo2QK8/JTj4ramSvTpGCo9CPCNo4AZ8qVOGpSgXzlcOfOT3VHOkzTfPo08GOE5jA==", "integrity": "sha512-8odp6d3ERKBa3BAVaYWXn95UxQv3sxvP1reD+xZamaX6ed8nCykhwlOiHSaHR9t/MtmIB+rJmNencI6Zy4Gxvg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@puppeteer/browsers": "2.10.6", "@puppeteer/browsers": "2.10.5",
"chromium-bidi": "7.1.1", "chromium-bidi": "5.1.0",
"debug": "^4.4.1", "debug": "^4.4.1",
"devtools-protocol": "0.0.1464554", "devtools-protocol": "0.0.1464554",
"typed-query-selector": "^2.12.0", "typed-query-selector": "^2.12.0",

View file

@ -1,6 +1,6 @@
{ {
"name": "ff-admin-server", "name": "ff-admin-server",
"version": "1.7.6", "version": "1.7.2",
"description": "Feuerwehr/Verein Mitgliederverwaltung Server", "description": "Feuerwehr/Verein Mitgliederverwaltung Server",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
@ -29,7 +29,7 @@
"crypto": "^1.0.1", "crypto": "^1.0.1",
"dotenv": "^17.2.0", "dotenv": "^17.2.0",
"express": "^5.1.0", "express": "^5.1.0",
"express-rate-limit": "^8.0.1", "express-rate-limit": "^7.5.1",
"express-validator": "^7.2.1", "express-validator": "^7.2.1",
"handlebars": "^4.7.8", "handlebars": "^4.7.8",
"helmet": "^8.1.0", "helmet": "^8.1.0",
@ -39,14 +39,14 @@
"lodash.clonedeep": "^4.5.0", "lodash.clonedeep": "^4.5.0",
"lodash.uniqby": "^4.7.0", "lodash.uniqby": "^4.7.0",
"moment": "^2.30.1", "moment": "^2.30.1",
"morgan": "^1.10.1", "morgan": "^1.10.0",
"ms": "^2.1.3", "ms": "^2.1.3",
"multer": "^2.0.2", "multer": "^2.0.1",
"node-schedule": "^2.1.1", "node-schedule": "^2.1.1",
"nodemailer": "^7.0.5", "nodemailer": "^7.0.5",
"pdf-lib": "^1.17.1", "pdf-lib": "^1.17.1",
"pg": "^8.16.3", "pg": "^8.16.3",
"puppeteer": "^24.14.0", "puppeteer": "^24.12.1",
"qrcode": "^1.5.4", "qrcode": "^1.5.4",
"reflect-metadata": "^0.2.2", "reflect-metadata": "^0.2.2",
"rss-parser": "^3.13.0", "rss-parser": "^3.13.0",
@ -68,7 +68,7 @@
"@types/morgan": "^1.9.10", "@types/morgan": "^1.9.10",
"@types/ms": "^2.1.0", "@types/ms": "^2.1.0",
"@types/multer": "^2.0.0", "@types/multer": "^2.0.0",
"@types/node": "^24.0.15", "@types/node": "^24.0.13",
"@types/node-schedule": "^2.1.8", "@types/node-schedule": "^2.1.8",
"@types/nodemailer": "^6.4.17", "@types/nodemailer": "^6.4.17",
"@types/pg": "~8.15.4", "@types/pg": "~8.15.4",

View file

@ -215,8 +215,7 @@ export async function getMembershipTotalStatisticsById(req: Request, res: Respon
const memberId = req.params.memberId; const memberId = req.params.memberId;
let member = await MembershipService.getTotalStatisticsById(memberId); let member = await MembershipService.getTotalStatisticsById(memberId);
if (!member) res.sendStatus(204); res.json(MembershipFactory.mapToSingleTotalStatistic(member));
else res.json(MembershipFactory.mapToSingleTotalStatistic(member));
} }
/** /**

View file

@ -50,7 +50,6 @@ import { memberEducations } from "./entity/club/member/memberEducations";
import { BackupAndResetDatabase1749296262915 } from "./migrations/1749296262915-BackupAndResetDatabase"; import { BackupAndResetDatabase1749296262915 } from "./migrations/1749296262915-BackupAndResetDatabase";
import { CreateSchema1749296280721 } from "./migrations/1749296280721-CreateSchema"; import { CreateSchema1749296280721 } from "./migrations/1749296280721-CreateSchema";
import { UpdateNewsletterQueryRelation1752502069178 } from "./migrations/1752502069178-updateNewsletterQueryRelation";
configCheck(); configCheck();
@ -109,11 +108,7 @@ const dataSource = new DataSource({
webapiPermission, webapiPermission,
setting, setting,
], ],
migrations: [ migrations: [BackupAndResetDatabase1749296262915, CreateSchema1749296280721],
BackupAndResetDatabase1749296262915,
CreateSchema1749296280721,
UpdateNewsletterQueryRelation1752502069178,
],
migrationsRun: true, migrationsRun: true,
migrationsTransactionMode: "each", migrationsTransactionMode: "each",
subscribers: [], subscribers: [],

View file

@ -40,7 +40,7 @@ export class newsletter {
@ManyToOne(() => query, { @ManyToOne(() => query, {
nullable: true, nullable: true,
onDelete: "SET NULL", onDelete: "CASCADE",
onUpdate: "RESTRICT", onUpdate: "RESTRICT",
cascade: ["insert"], cascade: ["insert"],
}) })

View file

@ -65,7 +65,7 @@ export default abstract class DynamicQueryBuilder {
count?: number; count?: number;
noLimit?: boolean; noLimit?: boolean;
}): SelectQueryBuilder<ObjectLiteral> { }): SelectQueryBuilder<ObjectLiteral> {
let affix = queryObj.id?.replaceAll("-", "") ?? StringHelper.random(10); let affix = queryObj.id.replaceAll("-", "") ?? StringHelper.random(10);
let query = dataSource.getRepository(queryObj.table).createQueryBuilder(`${affix}_${queryObj.table}`); let query = dataSource.getRepository(queryObj.table).createQueryBuilder(`${affix}_${queryObj.table}`);
this.buildDynamicQuery(query, queryObj, affix); this.buildDynamicQuery(query, queryObj, affix);
@ -118,7 +118,7 @@ export default abstract class DynamicQueryBuilder {
if (queryObject.join) { if (queryObject.join) {
for (const join of queryObject.join) { for (const join of queryObject.join) {
let subaffix = join.id?.replaceAll("-", "") ?? StringHelper.random(10); let subaffix = join.id.replaceAll("-", "") ?? StringHelper.random(10);
if (join.type == undefined) join.type = "defined"; if (join.type == undefined) join.type = "defined";
if (join.type == "defined") { if (join.type == "defined") {
query.innerJoin(`${alias}.${join.foreignColumn}`, `${subaffix}_${join.table}`); query.innerJoin(`${alias}.${join.foreignColumn}`, `${subaffix}_${join.table}`);

View file

@ -1,44 +0,0 @@
import { MigrationInterface, QueryRunner, TableForeignKey } from "typeorm";
import { newsletter_table } from "./baseSchemaTables/newsletter";
export class UpdateNewsletterQueryRelation1752502069178 implements MigrationInterface {
name = "UpdateNewsletterQueryRelation1752502069178";
public async up(queryRunner: QueryRunner): Promise<void> {
const table = await queryRunner.getTable("newsletter");
const foreignKey = table?.foreignKeys.find((fk) => fk.columnNames.includes("recipientsByQueryId"));
if (foreignKey) {
await queryRunner.dropForeignKey("newsletter", foreignKey);
}
await queryRunner.createForeignKey(
newsletter_table,
new TableForeignKey({
columnNames: ["recipientsByQueryId"],
referencedColumnNames: ["id"],
referencedTableName: "query",
onDelete: "SET NULL",
onUpdate: "RESTRICT",
})
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
const table = await queryRunner.getTable("newsletter");
const foreignKey = table?.foreignKeys.find((fk) => fk.columnNames.includes("recipientsByQueryId"));
if (foreignKey) {
await queryRunner.dropForeignKey("newsletter", foreignKey);
}
await queryRunner.createForeignKey(
newsletter_table,
new TableForeignKey({
columnNames: ["recipientsByQueryId"],
referencedColumnNames: ["id"],
referencedTableName: "query",
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
);
}
}

View file

@ -10,7 +10,7 @@ router.post("/verify", ParamaterPassCheckHelper.requiredIncludedMiddleware(["mai
router.put( router.put(
"/", "/",
ParamaterPassCheckHelper.requiredIncludedMiddleware(["mail", "token", "secret", "routine"]), ParamaterPassCheckHelper.requiredIncludedMiddleware(["mail", "token", "secret", "routine "]),
async (req, res) => { async (req, res) => {
await finishInvite(req, res); await finishInvite(req, res);
} }

View file

@ -50,7 +50,7 @@ router.post(
router.post( router.post(
"/finish", "/finish",
ParamaterPassCheckHelper.requiredIncludedMiddleware(["mail", "token", "secret", "routine"]), ParamaterPassCheckHelper.requiredIncludedMiddleware(["mail", "token", "totp"]),
async (req, res) => { async (req, res) => {
await finishInvite(req, res, true); await finishInvite(req, res, true);
} }

View file

@ -13,7 +13,7 @@ export default abstract class CalendarService {
.getRepository(calendar) .getRepository(calendar)
.createQueryBuilder("calendar") .createQueryBuilder("calendar")
.leftJoinAndSelect("calendar.type", "type") .leftJoinAndSelect("calendar.type", "type")
.orderBy("calendar.starttime", "ASC") .orderBy("starttime", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -77,7 +77,7 @@ export default abstract class MembershipService {
.getRepository(membershipTotalView) .getRepository(membershipTotalView)
.createQueryBuilder("membershipTotalView") .createQueryBuilder("membershipTotalView")
.where("membershipTotalView.memberId = :memberId", { memberId: memberId }) .where("membershipTotalView.memberId = :memberId", { memberId: memberId })
.getOne() .getOneOrFail()
.then((res) => { .then((res) => {
return res; return res;
}) })

View file

@ -12,7 +12,7 @@ export default abstract class NewsletterService {
return await dataSource return await dataSource
.getRepository(newsletter) .getRepository(newsletter)
.createQueryBuilder("newsletter") .createQueryBuilder("newsletter")
.orderBy("newsletter.createdAt", "DESC") .orderBy("createdAt", "DESC")
.offset(offset) .offset(offset)
.limit(count) .limit(count)
.getManyAndCount() .getManyAndCount()

View file

@ -14,7 +14,7 @@ export default abstract class ProtocolService {
.createQueryBuilder("protocol") .createQueryBuilder("protocol")
.offset(offset) .offset(offset)
.limit(count) .limit(count)
.orderBy("protocol.date", "DESC") .orderBy("date", "DESC")
.getManyAndCount() .getManyAndCount()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -13,7 +13,7 @@ export default abstract class AwardService {
return await dataSource return await dataSource
.getRepository(award) .getRepository(award)
.createQueryBuilder("award") .createQueryBuilder("award")
.orderBy("award.award", "ASC") .orderBy("award", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -12,7 +12,7 @@ export default abstract class CalendarTypeService {
return await dataSource return await dataSource
.getRepository(calendarType) .getRepository(calendarType)
.createQueryBuilder("calendarType") .createQueryBuilder("calendarType")
.orderBy("calendarType.type", "ASC") .orderBy("type", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -12,7 +12,7 @@ export default abstract class CommunicationTypeService {
return await dataSource return await dataSource
.getRepository(communicationType) .getRepository(communicationType)
.createQueryBuilder("communicationType") .createQueryBuilder("communicationType")
.orderBy("communicationType.type", "ASC") .orderBy("type", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -11,7 +11,7 @@ export default abstract class EducationService {
return await dataSource return await dataSource
.getRepository(education) .getRepository(education)
.createQueryBuilder("education") .createQueryBuilder("education")
.orderBy("education.education", "ASC") .orderBy("education", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -13,7 +13,7 @@ export default abstract class ExecutivePositionService {
return await dataSource return await dataSource
.getRepository(executivePosition) .getRepository(executivePosition)
.createQueryBuilder("executivePosition") .createQueryBuilder("executivePosition")
.orderBy("executivePosition.position", "ASC") .orderBy("position", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -13,7 +13,7 @@ export default abstract class MembershipStatusService {
return await dataSource return await dataSource
.getRepository(membershipStatus) .getRepository(membershipStatus)
.createQueryBuilder("membershipStatus") .createQueryBuilder("membershipStatus")
.orderBy("membershipStatus.status", "ASC") .orderBy("status", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -14,7 +14,7 @@ export default abstract class QualificationService {
return await dataSource return await dataSource
.getRepository(qualification) .getRepository(qualification)
.createQueryBuilder("qualification") .createQueryBuilder("qualification")
.orderBy("qualification.qualification", "ASC") .orderBy("qualification", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -12,7 +12,7 @@ export default abstract class QueryStoreService {
return await dataSource return await dataSource
.getRepository(query) .getRepository(query)
.createQueryBuilder("queryStore") .createQueryBuilder("queryStore")
.orderBy("queryStore.title", "ASC") .orderBy("title", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -12,7 +12,7 @@ export default abstract class SalutationService {
return await dataSource return await dataSource
.getRepository(salutation) .getRepository(salutation)
.createQueryBuilder("salutation") .createQueryBuilder("salutation")
.orderBy("salutation.salutation", "ASC") .orderBy("salutation", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -13,7 +13,7 @@ export default abstract class TemplateService {
return await dataSource return await dataSource
.getRepository(template) .getRepository(template)
.createQueryBuilder("template") .createQueryBuilder("template")
.orderBy("template.template", "ASC") .orderBy("template", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -15,7 +15,7 @@ export default abstract class TemplateUsageService {
.leftJoinAndSelect("templateUsage.header", "headerTemplate") .leftJoinAndSelect("templateUsage.header", "headerTemplate")
.leftJoinAndSelect("templateUsage.body", "bodyTemplate") .leftJoinAndSelect("templateUsage.body", "bodyTemplate")
.leftJoinAndSelect("templateUsage.footer", "footerTemplate") .leftJoinAndSelect("templateUsage.footer", "footerTemplate")
.orderBy("templateUsage.scope", "ASC") .orderBy("scope", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -13,7 +13,7 @@ export default abstract class RoleService {
.getRepository(role) .getRepository(role)
.createQueryBuilder("role") .createQueryBuilder("role")
.leftJoinAndSelect("role.permissions", "role_permissions") .leftJoinAndSelect("role.permissions", "role_permissions")
.orderBy("role.role", "ASC") .orderBy("role", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;

View file

@ -16,8 +16,8 @@ export default abstract class UserService {
.leftJoinAndSelect("user.roles", "roles") .leftJoinAndSelect("user.roles", "roles")
.leftJoinAndSelect("user.permissions", "permissions") .leftJoinAndSelect("user.permissions", "permissions")
.leftJoinAndSelect("roles.permissions", "role_permissions") .leftJoinAndSelect("roles.permissions", "role_permissions")
.orderBy("user.firstname", "ASC") .orderBy("firstname", "ASC")
.addOrderBy("user.lastname", "ASC") .addOrderBy("lastname", "ASC")
.getMany() .getMany()
.then((res) => { .then((res) => {
return res; return res;