# runapscheduler.py
import logging

from django.conf import settings

from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger
from django.core.management.base import BaseCommand
from django_apscheduler.jobstores import DjangoJobStore
from django_apscheduler import util
from apscheduler.triggers.combining import OrTrigger
from fmls_api.management.fmlsUpdater import pushWordpressData

logger = logging.getLogger(__name__)

@util.close_old_connections
def pushWpData():
    pushWordpressData._push_wordpress_data()

class Command(BaseCommand):
    help = "Runs APScheduler."

    def handle(self, *args, **options):
        scheduler = BlockingScheduler(timezone=settings.TIME_ZONE)
        scheduler.add_jobstore(DjangoJobStore(), "default")

        trigger = OrTrigger([CronTrigger(hour=00, minute=10), CronTrigger(hour=12, minute=40)])         #run scheduler at 12:30 AM and 11:30 PM
        scheduler.add_job(
            pushWpData,
            trigger=trigger,
            id="pushWpData",  # The `id` assigned to each job MUST be unique
            max_instances=1,
            replace_existing=True,
        )
        logger.info("Added job 'pushWpData'.")

        try:
            logger.info("Starting pushWpData scheduler...")
            scheduler.start()
        except KeyboardInterrupt:
            logger.info("Stopping pushWpData scheduler...")
            scheduler.shutdown()
            logger.info("pushWpData Scheduler shut down successfully!")