feat(pargar): prune inbound logs via MySQL INSERT trigger
Run one-time overflow cleanup on migrate and keep mande/document success rows capped at 2000 with an AFTER INSERT trigger, without cron or manual SQL. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -41,47 +41,5 @@ WHERE `type` = 'mande' AND `sync_status` = 'success'
|
||||
) AS `keep`
|
||||
);
|
||||
|
||||
-- Event داخل خود MySQL — بدون کرون سیستم (Navicat → Events)
|
||||
DROP EVENT IF EXISTS `khanegi_prune_pargar_inbound_docs`;
|
||||
DROP EVENT IF EXISTS `khanegi_prune_pargar_inbound_mande`;
|
||||
|
||||
CREATE EVENT `khanegi_prune_pargar_inbound_docs`
|
||||
ON SCHEDULE EVERY 1 HOUR
|
||||
STARTS CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE
|
||||
ENABLE
|
||||
DO
|
||||
DELETE FROM `pargar_sync_logs`
|
||||
WHERE `type` = 'document' AND `sync_status` = 'success'
|
||||
AND `id` <= (
|
||||
SELECT `cutoff` FROM (
|
||||
SELECT `id` AS `cutoff` FROM `pargar_sync_logs`
|
||||
WHERE `type` = 'document' AND `sync_status` = 'success'
|
||||
ORDER BY `id` DESC
|
||||
LIMIT 1 OFFSET 2000
|
||||
) AS `keep`
|
||||
)
|
||||
LIMIT 4000;
|
||||
|
||||
CREATE EVENT `khanegi_prune_pargar_inbound_mande`
|
||||
ON SCHEDULE EVERY 1 HOUR
|
||||
STARTS CURRENT_TIMESTAMP
|
||||
ON COMPLETION PRESERVE
|
||||
ENABLE
|
||||
DO
|
||||
DELETE FROM `pargar_sync_logs`
|
||||
WHERE `type` = 'mande' AND `sync_status` = 'success'
|
||||
AND `id` <= (
|
||||
SELECT `cutoff` FROM (
|
||||
SELECT `id` AS `cutoff` FROM `pargar_sync_logs`
|
||||
WHERE `type` = 'mande' AND `sync_status` = 'success'
|
||||
ORDER BY `id` DESC
|
||||
LIMIT 1 OFFSET 2000
|
||||
) AS `keep`
|
||||
)
|
||||
LIMIT 4000;
|
||||
|
||||
-- اگر دسترسی SUPER داری:
|
||||
-- SET GLOBAL event_scheduler = ON;
|
||||
-- SHOW VARIABLES LIKE 'event_scheduler';
|
||||
-- SHOW EVENTS;
|
||||
-- جایگزین: مایگریشن 2026_09_03_000002 (تریگر INSERT + prune یکبار روی migrate).
|
||||
-- EVENT ساعتی دیگر لازم نیست.
|
||||
|
||||
Reference in New Issue
Block a user