"""
Functions for removing unnecessary data from the database.
"""
from pathlib import Path

UPDATE_TABLES = [
    'address_levels',
    'gb_postcode',
    'import_osmosis_log',
    'import_polygon_%',
    'location_area%',
    'location_road%',
    'place',
    'planet_osm_%',
    'search_name_%',
    'us_postcode',
    'wikipedia_%'
]

def drop_update_tables(conn):
    """ Drop all tables only necessary for updating the database from
        OSM replication data.
    """

    where = ' or '.join(["(tablename LIKE '{}')".format(t) for t in UPDATE_TABLES])

    with conn.cursor() as cur:
        cur.execute("SELECT tablename FROM pg_tables WHERE " + where)
        tables = [r[0] for r in cur]

        for table in tables:
            cur.execute('DROP TABLE IF EXISTS "{}" CASCADE'.format(table))

    conn.commit()


def drop_flatnode_file(fname):
    """ Remove the flatnode file if it exists.
    """
    if fname:
        fpath = Path(fname)
        if fpath.exists():
            fpath.unlink()
