#!/usr/bin/env python3
# Show all regions in the DB

import mo.db as db
from collections import defaultdict

session = db.get_session()

root = None
children = defaultdict(list)


def walk(place, expected_level=0):
    indent = '\t' * place.level
    print(f"{indent}{place.name} [{place.type.name}] #{place.place_id} NUTS={place.nuts}")
    assert place.level == expected_level
    for c in sorted(children[place.place_id], key=lambda p: p.name):
        walk(c, expected_level + 1)


for place in session.query(db.Place).all():
    if place.parent:
        children[place.parent].append(place)
    else:
        assert not root
        root = place

walk(root)