# By: Riasat Ullah
# This file handles db queries for incoming sources that are detected as malicious.

from utils import var_names
import datetime
import psycopg2


def get_all_banned_sources(conn, timestamp):
    '''
    Gets all the current banned sources.
    :param conn: db connection
    :param timestamp: timestamp to check for
    :return: (dict) of list
    '''
    assert isinstance(timestamp, datetime.datetime)
    query = '''
            select ban_type, ban_value
            from banned_sources
            where start_timestamp <= %s
                and end_timestamp > %s;
            '''
    query_params = (timestamp, timestamp,)
    try:
        result = conn.fetch(query, query_params)
        data = dict()
        for ban_type, ban_val in result:
            if ban_type not in data:
                data[ban_type] = []
            data[ban_type].append(ban_val)
        return data
    except psycopg2.DatabaseError:
        raise
