import logging
from logging.handlers import RotatingFileHandler
import midas, midas.client
import sys

from databasing import run_forever
from setup_odb import setup_odb, get_log_path

client = midas.client.MidasClient("shiftschedule")

# make logger --------------------------------------------------------
global logger
logger = logging.getLogger('shiftschedule')
logger.setLevel(logging.INFO)
log_formatter = logging.Formatter('%(asctime)s [%(funcName)s,%(levelname)s]  %(message)s',
                                    datefmt='%H:%M:%S.000 %Y/%m/%d')

# setup file handler with rotating file handling. the log goes in the directory midas keeps
# its own logs in, which is what makes mhttpd list it alongside them
rfile_handler = RotatingFileHandler(get_log_path(client), mode='a',
                                    maxBytes=5*1024*1024, backupCount=1,
                                    encoding=None, delay=False)
rfile_handler.setFormatter(log_formatter)
rfile_handler.setLevel(logging.INFO)
logger.addHandler(rfile_handler)

# RUN ===================================
if __name__ == "__main__":
    # run main command loop
    args = sys.argv[1:]
    
    if len(sys.argv) == 1:
        run_forever(client, logger)
        
    # do setup  
    elif '--setup' in args:
        setup_odb(client)

    elif '--debug' in args:
        logger.setLevel(logging.DEBUG)
        rfile_handler.setLevel(logging.DEBUG)
        # client.set_log_level('debug')
        # logger.level = 'debug'
        logger.info('Logging level set to DEBUG')
        run_forever(client, logger)

    # an unrecognised argument used to fall through every branch and exit 0 having done
    # nothing, which looks exactly like a frontend that started and immediately died
    else:
        print(f'Unrecognized arguments {args}. Valid options are --setup and --debug.')
        sys.exit(1)