Programming

1. Sync Marts

"""Load already-built parquet marts into the database. Safe to run on the server."""
from pathlib import Path

from django.core.management.base import BaseCommand, CommandError

from lending_analytics import config as C
from portfolio import bridge


class Command(BaseCommand):
    help = "Load parquet marts into the database without rebuilding them."

    def add_arguments(self, parser):
        parser.add_argument("--dir", default=str(C.MART_DIR))

    def handle(self, *args, **o):
        d = Path(o["dir"])
        if not d.exists():
            raise CommandError(f"no mart directory at {d}")
        counts = bridge.sync_all(d, verbose=self.stdout.write)
        if not counts:
            raise CommandError("no marts found — did the bundle extract correctly?")
        self.stdout.write(self.style.SUCCESS(
            f"synced {sum(counts.values()):,} rows; "
            f"latest period {bridge.latest_period()}"))
Helpful? Dislike 0 Log in to react