From 0ad923308712447e8e92a8c2acc9430111581c1c Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 1 Mar 2025 20:55:18 -0600 Subject: [PATCH] feat(logs): enable dynamic log rotation with database state management --- .../server/src/utils/access-log/handler.ts | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/packages/server/src/utils/access-log/handler.ts b/packages/server/src/utils/access-log/handler.ts index d05d805f3..69d0cc68b 100644 --- a/packages/server/src/utils/access-log/handler.ts +++ b/packages/server/src/utils/access-log/handler.ts @@ -1,6 +1,8 @@ import { IS_CLOUD, paths } from "@dokploy/server/constants"; import { type RotatingFileStream, createStream } from "rotating-file-stream"; import { execAsync } from "../process/execAsync"; +import { findAdmin } from "@dokploy/server/services/admin"; +import { updateUser } from "@dokploy/server/services/user"; class LogRotationManager { private static instance: LogRotationManager; @@ -28,19 +30,18 @@ class LogRotationManager { } private async getStateFromDB(): Promise { - // const setting = await db.query.admins.findFirst({}); - // return setting?.enableLogRotation ?? false; - return false; + const admin = await findAdmin(); + return admin?.user.enableLogRotation ?? false; } - private async setStateInDB(_active: boolean): Promise { - // const admin = await db.query.admins.findFirst({}); - // if (!admin) { - // return; - // } - // await updateAdmin(admin?.authId, { - // enableLogRotation: active, - // }); + private async setStateInDB(active: boolean): Promise { + const admin = await findAdmin(); + if (!admin) { + return; + } + await updateUser(admin.user.id, { + enableLogRotation: active, + }); } private async activateStream(): Promise { @@ -74,26 +75,26 @@ class LogRotationManager { } public async activate(): Promise { - // const currentState = await this.getStateFromDB(); - // if (currentState) { - // return true; - // } + const currentState = await this.getStateFromDB(); + if (currentState) { + return true; + } - // await this.setStateInDB(true); - // await this.activateStream(); + await this.setStateInDB(true); + await this.activateStream(); return true; } public async deactivate(): Promise { console.log("Deactivating log rotation..."); - // const currentState = await this.getStateFromDB(); - // if (!currentState) { - // console.log("Log rotation is already inactive in DB"); - // return true; - // } + const currentState = await this.getStateFromDB(); + if (!currentState) { + console.log("Log rotation is already inactive in DB"); + return true; + } - // await this.setStateInDB(false); - // await this.deactivateStream(); + await this.setStateInDB(false); + await this.deactivateStream(); console.log("Log rotation deactivated successfully"); return true; } @@ -113,9 +114,8 @@ class LogRotationManager { } } public async getStatus(): Promise { - // const dbState = await this.getStateFromDB(); - // return dbState; - return false; + const dbState = await this.getStateFromDB(); + return dbState; } } export const logRotationManager = LogRotationManager.getInstance();