From 63d6bd7c8f9a6f13e683b76a5deec6718d8fb692 Mon Sep 17 00:00:00 2001 From: Wini_Fy Date: Thu, 19 Mar 2026 09:36:14 +0700 Subject: [PATCH 1/4] feat: Rename file --- models/AuditLog.js | 2 +- models/HeaderMenu.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/models/AuditLog.js b/models/AuditLog.js index 08c0293..eb5e545 100644 --- a/models/AuditLog.js +++ b/models/AuditLog.js @@ -61,4 +61,4 @@ const auditLogSchema = new mongoose.Schema({ }, }); -module.exports = mongoose.model("AuditLog", auditLogSchema); +module.exports = mongoose.model("AuditLog", auditLogSchema); // Index for faster queries diff --git a/models/HeaderMenu.js b/models/HeaderMenu.js index b5212a8..13c8d3c 100644 --- a/models/HeaderMenu.js +++ b/models/HeaderMenu.js @@ -43,6 +43,6 @@ const HeaderMenuSchema = new mongoose.Schema({ // Indexes for optimization HeaderMenuSchema.index({ order: 1 }); HeaderMenuSchema.index({ status: 1 }); -HeaderMenuSchema.index({ parentId: 1, order: 1 }); // Useful for fetching children in order +HeaderMenuSchema.index({ parentId: 1, order: 1 }); module.exports = mongoose.model('HeaderMenu', HeaderMenuSchema); From f26a4b7e255d0313206161d392847eff1a297d83 Mon Sep 17 00:00:00 2001 From: Wini_Fy Date: Thu, 19 Mar 2026 09:39:12 +0700 Subject: [PATCH 2/4] feat: Remove file --- models/AuditLog.js | 64 -------------------------------------------- models/HeaderMenu.js | 48 --------------------------------- 2 files changed, 112 deletions(-) delete mode 100644 models/AuditLog.js delete mode 100644 models/HeaderMenu.js diff --git a/models/AuditLog.js b/models/AuditLog.js deleted file mode 100644 index eb5e545..0000000 --- a/models/AuditLog.js +++ /dev/null @@ -1,64 +0,0 @@ -const mongoose = require("mongoose"); -const AUDIT_ACTIONS = require("../constants/auditAction"); - -const auditLogSchema = new mongoose.Schema({ - model: { - type: String, - required: true, - }, - - documentId: { - type: mongoose.Schema.Types.ObjectId, - required: true, - }, - - action: { - type: String, - enum: Object.values(AUDIT_ACTIONS), - required: true, - }, - - before: { - type: mongoose.Schema.Types.Mixed, - default: null, - }, - - after: { - type: mongoose.Schema.Types.Mixed, - default: null, - }, - - changes: { - type: [ - { - field: String, - before: mongoose.Schema.Types.Mixed, - after: mongoose.Schema.Types.Mixed, - }, - ], - default: [], - }, - - ipAddress: { - type: String, - required: true, - }, - - userAgent: { - type: String, - default: "", - }, - - performedBy: { - type: mongoose.Schema.Types.ObjectId, - ref: "User", - default: null, - }, - - createdAt: { - type: Date, - default: Date.now, - }, -}); - -module.exports = mongoose.model("AuditLog", auditLogSchema); // Index for faster queries diff --git a/models/HeaderMenu.js b/models/HeaderMenu.js deleted file mode 100644 index 13c8d3c..0000000 --- a/models/HeaderMenu.js +++ /dev/null @@ -1,48 +0,0 @@ -const mongoose = require('mongoose'); - -const HeaderMenuSchema = new mongoose.Schema({ - title: { - type: String, - required: true, - trim: true - }, - slug: { - type: String, - required: true, - trim: true, - lowercase: true - }, - url: { - type: String, - required: true, - trim: true - }, - parentId: { - type: mongoose.Schema.Types.ObjectId, - ref: 'HeaderMenu', - default: null - }, - order: { - type: Number, - default: 0 - }, - status: { - type: String, - enum: ['active', 'inactive'], - default: 'active' - }, - type: { - type: String, - enum: ['internal', 'external'], - default: 'internal' - } -}, { - timestamps: true -}); - -// Indexes for optimization -HeaderMenuSchema.index({ order: 1 }); -HeaderMenuSchema.index({ status: 1 }); -HeaderMenuSchema.index({ parentId: 1, order: 1 }); - -module.exports = mongoose.model('HeaderMenu', HeaderMenuSchema); From 4e4042e075e46ba650e3ad91c51bf4213164cba5 Mon Sep 17 00:00:00 2001 From: Wini_Fy Date: Thu, 19 Mar 2026 09:39:53 +0700 Subject: [PATCH 3/4] feat: Create new file --- models/auditLog.js | 64 ++++++++++++++++++++++++++++++++++++++++++++ models/headerMenu.js | 48 +++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 models/auditLog.js create mode 100644 models/headerMenu.js diff --git a/models/auditLog.js b/models/auditLog.js new file mode 100644 index 0000000..eb5e545 --- /dev/null +++ b/models/auditLog.js @@ -0,0 +1,64 @@ +const mongoose = require("mongoose"); +const AUDIT_ACTIONS = require("../constants/auditAction"); + +const auditLogSchema = new mongoose.Schema({ + model: { + type: String, + required: true, + }, + + documentId: { + type: mongoose.Schema.Types.ObjectId, + required: true, + }, + + action: { + type: String, + enum: Object.values(AUDIT_ACTIONS), + required: true, + }, + + before: { + type: mongoose.Schema.Types.Mixed, + default: null, + }, + + after: { + type: mongoose.Schema.Types.Mixed, + default: null, + }, + + changes: { + type: [ + { + field: String, + before: mongoose.Schema.Types.Mixed, + after: mongoose.Schema.Types.Mixed, + }, + ], + default: [], + }, + + ipAddress: { + type: String, + required: true, + }, + + userAgent: { + type: String, + default: "", + }, + + performedBy: { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + default: null, + }, + + createdAt: { + type: Date, + default: Date.now, + }, +}); + +module.exports = mongoose.model("AuditLog", auditLogSchema); // Index for faster queries diff --git a/models/headerMenu.js b/models/headerMenu.js new file mode 100644 index 0000000..13c8d3c --- /dev/null +++ b/models/headerMenu.js @@ -0,0 +1,48 @@ +const mongoose = require('mongoose'); + +const HeaderMenuSchema = new mongoose.Schema({ + title: { + type: String, + required: true, + trim: true + }, + slug: { + type: String, + required: true, + trim: true, + lowercase: true + }, + url: { + type: String, + required: true, + trim: true + }, + parentId: { + type: mongoose.Schema.Types.ObjectId, + ref: 'HeaderMenu', + default: null + }, + order: { + type: Number, + default: 0 + }, + status: { + type: String, + enum: ['active', 'inactive'], + default: 'active' + }, + type: { + type: String, + enum: ['internal', 'external'], + default: 'internal' + } +}, { + timestamps: true +}); + +// Indexes for optimization +HeaderMenuSchema.index({ order: 1 }); +HeaderMenuSchema.index({ status: 1 }); +HeaderMenuSchema.index({ parentId: 1, order: 1 }); + +module.exports = mongoose.model('HeaderMenu', HeaderMenuSchema); From 45077b858bb46b2803acff937f1863a878303d27 Mon Sep 17 00:00:00 2001 From: Wini_Fy Date: Thu, 19 Mar 2026 09:49:22 +0700 Subject: [PATCH 4/4] fix: correct date filtering logic to ensure proper date range handling --- controllers/auditLogController.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/controllers/auditLogController.js b/controllers/auditLogController.js index f9bc7a8..8db4bdb 100644 --- a/controllers/auditLogController.js +++ b/controllers/auditLogController.js @@ -26,6 +26,9 @@ exports.index = async (req, res) => { if (req.query.dateFrom || req.query.dateTo) { filter.createdAt = {}; if (req.query.dateFrom) { + filter.createdAt.$gte = new Date(req.query.dateFrom); + } + if (req.query.dateTo) { const dateTo = new Date(req.query.dateTo); dateTo.setHours(23, 59, 59, 999); // End of day