Add db backup task

Close #2
This commit is contained in:
2025-10-28 10:57:41 +01:00
parent 994624af46
commit a7d6d45a78
4 changed files with 30 additions and 6 deletions

View File

@@ -1,13 +1,36 @@
import argparse
import datetime
import os
import shutil
from pathlib import Path
from sqlalchemy import Date, cast, func, select
from sqlalchemy import func, select
from sqlalchemy.orm import Session
from meal_manager.main import engine
from meal_manager.main import engine, sqlite_file_name
from meal_manager.models import Event, Registration, Subscription
def backup_db():
backup_dir = Path(os.environ.get("MEAL_MANAGER_BACKUP_DIR", None))
shutil.copy2(
sqlite_file_name,
backup_dir / f"{sqlite_file_name}.{datetime.datetime.now().isoformat()}",
)
# TODO: Delete old backups
def run_nightly_tasks():
print("Applying Subscriptions")
with Session(engine) as session:
apply_subscriptions(session)
print("Running db backup")
backup_db()
print("Done running nightly tasks.")
def apply_subscriptions(session: Session, event: Event = None, dry_run: bool = False):
subscriptions = session.scalars(select(Subscription)).all()