# Copyright 2023 Memgraph Ltd.
#
# Use of this software is governed by the Business Source License
# included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
# License, and you may not use this file except in compliance with the Business Source License.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0, included in the file
# licenses/APL.txt.

import logging
from typing import Dict

from constants import (
    COUNT,
    CPU,
    DATABASE,
    DOCKER,
    DURATION,
    IMPORT,
    ITERATIONS,
    LATENCY_STATS,
    MEMORY,
    METADATA,
    RETRIES,
    RUN_CONFIGURATION,
    THROUGHPUT,
)

COLOR_GRAY = 0
COLOR_RED = 1
COLOR_GREEN = 2
COLOR_YELLOW = 3
COLOR_BLUE = 4
COLOR_VIOLET = 5
COLOR_CYAN = 6
COLOR_WHITE = 7


logger = logging.Logger("mgbench_logger")
file_handler = logging.FileHandler("mgbench_logs.log")
file_format = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
file_handler.setFormatter(file_format)
logger.addHandler(file_handler)


def _log(color, *args):
    print("\033[1;3{}m~~".format(color), *args, "~~\033[0m")


def log(msg):
    print(str(msg))
    logger.info(msg=msg)


def init(*args):
    _log(COLOR_BLUE, *args)
    logger.info(*args)


def info(*args):
    _log(COLOR_WHITE, *args)
    logger.info(*args)


def success(*args):
    _log(COLOR_GREEN, *args)
    logger.info(*args)


def warning(*args):
    _log(COLOR_YELLOW, *args)
    logger.warning(*args)


def error(*args):
    _log(COLOR_RED, *args)
    logger.critical(*args)


def summary(*args):
    _log(COLOR_CYAN, *args)
    logger.info(*args)