mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
75 lines
2.6 KiB
Lua
75 lines
2.6 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
local PLUGIN = PLUGIN
|
|
local ix = ix
|
|
|
|
PLUGIN.name = "Database Cleaner"
|
|
PLUGIN.description = "Cleans up old logs and other database entries."
|
|
PLUGIN.author = "Votton"
|
|
|
|
ix.config.Add("cleanupInterval", 3, "The number of hours between database cleanups.", nil, {
|
|
data = {min = 1, max = 24},
|
|
category = "Database Cleanup"
|
|
})
|
|
|
|
ix.config.Add("logCleanupDays", 122, "The number of days to keep logs for.", nil, {
|
|
data = {min = 1, max = 365},
|
|
category = "Database Cleanup"
|
|
})
|
|
|
|
ix.config.Add("deletedEntityCleanupDays", 30, "The number of days to keep deleted entities for.", nil, {
|
|
data = {min = 1, max = 365},
|
|
category = "Database Cleanup"
|
|
})
|
|
|
|
-- Cleans up logs that are older than the specified number of days.
|
|
function PLUGIN:cleanLogs()
|
|
local cleanupDays = ix.config.Get("logCleanupDays")
|
|
local cleanupTimestamp = os.time() - (cleanupDays * 24 * 60 * 60)
|
|
|
|
local query = mysql:Delete("ix_logs")
|
|
query:WhereLT("datetime", cleanupTimestamp)
|
|
query:Execute(function(result)
|
|
print("[Database Cleaner] is cleaning up logs older than " .. cleanupDays .. " days.")
|
|
if result and result.affected > 0 then
|
|
print("[Database Cleaner] Deleted " .. result.affected .. " logs.")
|
|
else
|
|
print("[Database Cleaner] No logs to clean up.")
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- Cleans up deleted entities that are older than the specified number of days.
|
|
function PLUGIN:cleanDeletedEntities()
|
|
local cleanupDays = ix.config.Get("deletedEntityCleanupDays")
|
|
local cleanupTimestamp = os.time() - (cleanupDays * 24 * 60 * 60)
|
|
|
|
local query = mysql:Delete("ix_saveents")
|
|
query:WhereLT("deleted", cleanupTimestamp)
|
|
query:WhereNotEqual("deleted", 0)
|
|
query:Execute(function(result)
|
|
print("[Database Cleaner] is cleaning up deleted entities older than " .. cleanupDays .. " days.")
|
|
if result and result.affected > 0 then
|
|
print("[Database Cleaner] Deleted " .. result.affected .. " entities.")
|
|
else
|
|
print("[Database Cleaner] No deleted entities to clean up.")
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- Initialise the cleanup timer when the database is connected.
|
|
function PLUGIN:DatabaseConnected()
|
|
local cleanupInterval = ix.config.Get("cleanupInterval")
|
|
timer.Create("ixDatabaseCleaner", cleanupInterval * 60 * 60, 0, function()
|
|
self:cleanLogs()
|
|
self:cleanDeletedEntities()
|
|
end)
|
|
end |