from xml.parsers.expat import model

from django.core.management.base import BaseCommand

from api.models import TtAvailability, TtConstraintProfile, TtFreeBlock, TtMaximumHour,\
     TtMaximumWorkspan, TtResourceBreak, TtStartPreference, TtTimeBlock, TtTravelTable, \
     TtUsagePreference, TtWeekPattern
from api.utils import convert_to_redis_week, bulk_sync_to_redis
from backend.redis_client import redis_client

class Command(BaseCommand):
    def handle(self, *args, **options):

        columns = {"id", "department_id"}
        models = {
            "availability": TtAvailability,
            "constraint_profile": TtConstraintProfile,
            "free_block": TtFreeBlock,
            "maximum_hour": TtMaximumHour,
            "maximum_workspan": TtMaximumWorkspan,
            "resource_break": TtResourceBreak,
            "start_preference": TtStartPreference,
            "time_block": TtTimeBlock,
            "travel_table": TtTravelTable,
            "usage_preference": TtUsagePreference,
            "week_pattern": TtWeekPattern,
        }
        redis_data={
            "update":{},
        }
        for redis_table, model in models.items():
            redis_data["update"].setdefault(redis_table, [])
            for val in model.objects.all():
                redis_data["update"][redis_table].append({column: getattr(val, column) for column in columns})

        bulk_sync_to_redis(redis_client, redis_data)




