77import uvicorn
88from enum import Enum
99from pathlib import Path
10- from datetime import datetime
10+ from datetime import datetime , timedelta
1111from pyais import IterMessages
1212from contextlib import asynccontextmanager
1313from fastapi .responses import FileResponse
@@ -212,6 +212,41 @@ def delete_log_file(self):
212212 else :
213213 logger .info ("Log file does not exist, nothing to delete" )
214214
215+ def delete_old_database (self , weeks : int = 1 ):
216+ """Delete database files older than the specified number of weeks.
217+
218+ Args:
219+ weeks: Number of weeks to keep database files. Default is 1 week.
220+ """
221+ try :
222+ cutoff_time = datetime .now () - timedelta (weeks = weeks )
223+ db_dir = self .config .database_url
224+
225+ if not db_dir .exists ():
226+ logger .warning (f"Database directory does not exist: { db_dir } " )
227+ return
228+
229+ deleted_count = 0
230+ for db_file in db_dir .glob ("*.db" ):
231+ # Skip the current live database and snapshot
232+ if db_file == self .LIVE_DB or db_file == self .SNAPSHOT_DB :
233+ continue
234+
235+ # Check file modification time
236+ file_mtime = datetime .fromtimestamp (db_file .stat ().st_mtime )
237+ if file_mtime < cutoff_time :
238+ db_file .unlink (missing_ok = True )
239+ deleted_count += 1
240+ logger .info (f"Deleted old database file: { db_file .name } " )
241+
242+ if deleted_count > 0 :
243+ logger .info (f"Deleted { deleted_count } old database file(s)" )
244+ else :
245+ logger .info ("No old database files to delete" )
246+
247+ except Exception as e :
248+ logger .error (f"Error deleting old database files: { e } " )
249+
215250 async def reset_db_on_new_day (self ):
216251 """Delete files older than current day at 23:59"""
217252 logger .warning ("SQLite DB older than 1 day — resetting" )
@@ -222,6 +257,8 @@ async def reset_db_on_new_day(self):
222257 logger .info ("SQLite DB reset completed" )
223258 # Delete log file as well
224259 self .delete_log_file ()
260+ # Delete old database files (older than 1 week)
261+ self .delete_old_database (weeks = 1 )
225262 except Exception as e :
226263 logger .error (f"Cleanup error: { e } " )
227264
0 commit comments