from __future__ import annotations

from typing import TYPE_CHECKING

import click

from mycli.packages.special.dsn_aliases import is_valid_dsn_alias

if TYPE_CHECKING:
    from mycli.client import MyCli


def main_list_dsn(mycli: 'MyCli') -> int:
    try:
        alias_dsn = mycli.config['alias_dsn']
    except KeyError:
        click.secho('Invalid DSNs found in the config file. Please check the "[alias_dsn]" section in myclirc.', err=True, fg='red')
        return 1
    except Exception as e:
        click.secho(str(e), err=True, fg='red')
        return 1
    for alias, value in alias_dsn.items():
        if not is_valid_dsn_alias(alias):
            continue
        if mycli.verbosity >= 1:
            click.secho(f'{alias} : {value}')
        else:
            click.secho(alias)
    return 0
