import os

from pathlib import Path
from time import strftime, localtime

from conf.server import paths
from base.share import SharedImageDirectory

def create_session_log():
    """
    Create a log file with an autoincremented date-specific filename.

    :return: absolute path to log file
    """
    where_log = Path(paths['logs']['session'])

    yyyymmdd = strftime('%Y%m%d', localtime())

    idx = 0
    while os.path.exists(where_log / f'{yyyymmdd}-{idx:04d}.log'):
        idx += 1

    log_file = where_log / f'{yyyymmdd}-{idx:04d}.log'
    with open(log_file, 'w+') as fh:
        fh.write(f'{yyyymmdd} -- called session constructor')
    return log_file

class Session(object):
    """
    Singleton class for persisting data between API calls.
    """
    def __new__(cls):
        if not hasattr(cls, 'instance'):
            cls.instance = super(Session, cls).__new__(cls)
            cls.instance.logfile = create_session_log()
        return cls.instance

    def __init__(self):
        print('Initializing session')
        self.inbound = SharedImageDirectory(paths['images']['inbound'])
        self.outbound = SharedImageDirectory(paths['images']['outbound'])

    def restart(self):
        self.__init__()
        self.logfile = create_session_log()