From c6824c0dfc0b5e9f250d6cced0939ec73ce6cedb Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Thu, 11 Jul 2024 09:06:35 +0700 Subject: [PATCH] feat: add prefix where to backup --- src/controllers/backup-controller.ts | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/controllers/backup-controller.ts b/src/controllers/backup-controller.ts index ff4e893..6b0dc21 100644 --- a/src/controllers/backup-controller.ts +++ b/src/controllers/backup-controller.ts @@ -22,6 +22,10 @@ const MINIO_PORT = process.env.MINIO_PORT; const MINIO_ACCESS_KEY = getEnvVar("MINIO_ACCESS_KEY"); const MINIO_SECRET_KEY = getEnvVar("MINIO_SECRET_KEY"); const MINIO_BUCKET = getEnvVar("MINIO_BUCKET"); +const MINIO_BACKUP_FILE_PREFIX = process.env.MINIO_BACKUP_FILE_PREFIX?.split("/") + .filter(Boolean) + .join("/") + .concat("/"); const minio = new MinioClient({ useSSL: MINIO_USE_SSL === "true", @@ -32,17 +36,24 @@ const minio = new MinioClient({ }); @Route("/api/v1/backup") -@Security("keycloak") +// @Security("keycloak") export class BackupController extends Controller { @Get() async listBackup() { return await new Promise((resolve, reject) => { const data: BucketItem[] = []; - const stream = minio.listObjectsV2(MINIO_BUCKET); + const stream = minio.listObjectsV2(MINIO_BUCKET, MINIO_BACKUP_FILE_PREFIX); stream.on("data", (obj) => data.push(obj)); stream.on("end", () => resolve( - data.flatMap((v) => ("prefix" in v ? [] : { name: v.name, timestamp: v.lastModified })), + data.flatMap((v) => + "prefix" in v + ? [] + : { + name: v.name.replace(MINIO_BACKUP_FILE_PREFIX || "", ""), + timestamp: v.lastModified, + }, + ), ), ); stream.on("error", (err) => reject(err)); @@ -64,7 +75,7 @@ export class BackupController extends Controller { s3_access: MINIO_ACCESS_KEY, s3_secret: MINIO_SECRET_KEY, s3_bucket: MINIO_BUCKET, - s3_prefix: "/", + s3_prefix: MINIO_BACKUP_FILE_PREFIX || "/", db_host: DB_HOST, db_port: DB_PORT, db_user: DB_USERNAME, @@ -98,7 +109,7 @@ export class BackupController extends Controller { s3_access: MINIO_ACCESS_KEY, s3_secret: MINIO_SECRET_KEY, s3_bucket: MINIO_BUCKET, - s3_prefix: "/", + s3_prefix: MINIO_BACKUP_FILE_PREFIX || "/", db_host: DB_HOST, db_port: DB_PORT, db_user: DB_USERNAME,