add settings to backup

This commit is contained in:
Julian Krauser 2025-04-25 12:21:25 +02:00
parent ce9f621b8b
commit 99eafcb352
3 changed files with 25 additions and 11 deletions

View file

@ -18,7 +18,8 @@ export type BackupSection =
| "query"
| "template"
| "user"
| "webapi";
| "webapi"
| "settings";
export type BackupSectionRefered = {
[key in BackupSection]?: Array<string>;
@ -42,6 +43,7 @@ export default abstract class BackupHelper {
{ type: "template", orderOnInsert: 2, orderOnClear: 1 }, // INSERT depends on member com
{ type: "user", orderOnInsert: 1, orderOnClear: 1 },
{ type: "webapi", orderOnInsert: 1, orderOnClear: 1 },
{ type: "settings", orderOnInsert: 1, orderOnClear: 1 },
];
private static readonly backupSectionRefered: BackupSectionRefered = {
@ -76,6 +78,7 @@ export default abstract class BackupHelper {
template: ["template", "template_usage"],
user: ["user", "user_permission", "role", "role_permission", "invite"],
webapi: ["webapi", "webapi_permission"],
settings: ["setting"],
};
private static transactionManager: EntityManager;
@ -220,6 +223,8 @@ export default abstract class BackupHelper {
return await this.getUser(collectIds);
case "webapi":
return await this.getWebapi();
case "settings":
return await this.getSettings();
default:
return [];
}
@ -460,6 +465,13 @@ export default abstract class BackupHelper {
.addSelect(["permissions.permission"])
.getMany();
}
private static async getSettings(): Promise<Array<any>> {
return await dataSource
.getRepository("setting")
.createQueryBuilder("setting")
.select(["setting.topic", "setting.key", "setting.value"])
.getMany();
}
private static async setSectionData(
section: BackupSection,
@ -476,6 +488,7 @@ export default abstract class BackupHelper {
if (section == "template" && !Array.isArray(data)) await this.setTemplate(data);
if (section == "user" && !Array.isArray(data)) await this.setUser(data);
if (section == "webapi" && Array.isArray(data)) await this.setWebapi(data);
if (section == "settings" && Array.isArray(data)) await this.setSettings(data);
}
private static async setMemberData(data: Array<any>): Promise<void> {
@ -810,4 +823,7 @@ export default abstract class BackupHelper {
private static async setWebapi(data: Array<any>): Promise<void> {
await this.transactionManager.getRepository("webapi").save(data);
}
private static async setSettings(data: Array<any>): Promise<void> {
await this.transactionManager.getRepository("setting").save(data);
}
}

View file

@ -23,7 +23,7 @@ import { dataSource } from "./data-source";
import BackupHelper from "./helpers/backupHelper";
import SettingHelper from "./helpers/settingsHelper";
dataSource.initialize().then(async () => {
if (false && (await dataSource.createQueryRunner().hasTable("user"))) {
if (await dataSource.createQueryRunner().hasTable("user")) {
await BackupHelper.autoRestoreBackup().catch((err) => {
console.log(`${new Date().toISOString()}: failed auto-restoring database`, err);
});

View file

@ -28,9 +28,13 @@ router.post("/app", async (req, res) => {
await setAppIdentity(req, res);
});
router.post("/mail", async (req, res) => {
await setMailConfig(req, res);
});
router.post(
"/mail",
ParamaterPassCheckHelper.requiredIncludedMiddleware(["mail", "username", "password", "host", "port", "secure"]),
async (req, res) => {
await setMailConfig(req, res);
}
);
router.post("/verify", ParamaterPassCheckHelper.requiredIncludedMiddleware(["mail", "token"]), async (req, res) => {
await verifyInvite(req, res);
@ -52,10 +56,4 @@ router.post(
}
);
/**
* TODO:
* set basic settings like clubname ...
* enable upload of images and icons: transform pwa-> 512x512 png / 48x48 ico
*/
export default router;