From 7b27c7d49ad86ea9d95ea647ab600cc78b61a775 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 28 Mar 2025 22:28:07 +0100 Subject: [PATCH] fix: check template usages being present after backup --- src/helpers/backupHelper.ts | 22 +++++++++++++++++++++- src/helpers/templateHelper.ts | 5 +++-- src/type/templateTypes.ts | 11 +++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 src/type/templateTypes.ts diff --git a/src/helpers/backupHelper.ts b/src/helpers/backupHelper.ts index 6a8df98..8a6191f 100644 --- a/src/helpers/backupHelper.ts +++ b/src/helpers/backupHelper.ts @@ -6,6 +6,7 @@ import InternalException from "../exceptions/internalException"; import UserService from "../service/management/userService"; import { BACKUP_COPIES, BACKUP_INTERVAL } from "../env.defaults"; import DatabaseActionException from "../exceptions/databaseActionException"; +import { availableTemplates } from "../type/templateTypes"; export type BackupSection = | "member" @@ -743,11 +744,30 @@ export default abstract class BackupHelper { .values(data?.["template"] ?? []) .orIgnore() .execute(); + + let templates = await this.transactionManager.getRepository("template").find(); + let dataWithMappedId = (data?.["template_usage"] ?? []) + .filter((d) => availableTemplates.includes(d.scope)) + .map((d) => ({ + ...d, + headerHeightId: templates.find((template) => template.template == d.headerHeight.template)?.id ?? null, + footerHeightId: templates.find((template) => template.template == d.footerHeight.template)?.id ?? null, + headerId: templates.find((template) => template.template == d.header.template)?.id ?? null, + bodyId: templates.find((template) => template.template == d.body.template)?.id ?? null, + footerId: templates.find((template) => template.template == d.footer.template)?.id ?? null, + })); + availableTemplates.forEach((at) => { + if (!dataWithMappedId.some((d) => d.scope == at)) { + dataWithMappedId.push({ + scope: at, + }); + } + }); await this.transactionManager .createQueryBuilder() .insert() .into("template_usage") - .values(data?.["template_usage"] ?? []) + .values(dataWithMappedId) .orIgnore() .execute(); } diff --git a/src/helpers/templateHelper.ts b/src/helpers/templateHelper.ts index e75c87c..b8d97f1 100644 --- a/src/helpers/templateHelper.ts +++ b/src/helpers/templateHelper.ts @@ -3,6 +3,7 @@ import { PermissionModule } from "../type/permissionTypes"; import TemplateUsageService from "../service/configuration/templateUsageService"; import Handlebars, { template } from "handlebars"; import { FileSystemHelper } from "./fileSystemHelper"; +import { TemplateFormat } from "../type/templateTypes"; export abstract class TemplateHelper { static getTemplateFromFile(template: string) { @@ -40,7 +41,7 @@ export abstract class TemplateHelper { bodyData = {}, footerData = {}, }: { - module: `${PermissionModule}` | `${PermissionModule}.${string}`; + module: TemplateFormat; title?: string; headerData?: any; bodyData?: any; @@ -88,7 +89,7 @@ export abstract class TemplateHelper { footerData = {}, customTemplate, }: { - module: `${PermissionModule}` | `${PermissionModule}.${string}`; + module: TemplateFormat; title?: string; headerData?: any; bodyData?: any; diff --git a/src/type/templateTypes.ts b/src/type/templateTypes.ts new file mode 100644 index 0000000..cede2bb --- /dev/null +++ b/src/type/templateTypes.ts @@ -0,0 +1,11 @@ +import { PermissionModule } from "./permissionTypes"; + +export type TemplateFormat = `${PermissionModule}` | `${PermissionModule}.${string}`; + +export const availableTemplates: Array = [ + "member", + "listprint", + "listprint.member", + "newsletter", + "protocol", +];