from peewee import OperationalError

from data.database import validate_database_url
from util.config.validators import BaseValidator, ConfigValidationException

class DatabaseValidator(BaseValidator):
  name = "database"

  @classmethod
  def validate(cls, config, user, user_password):
    """ Validates connecting to the database. """
    try:
      validate_database_url(config['DB_URI'], config.get('DB_CONNECTION_ARGS', {}))
    except OperationalError as ex:
      if ex.args and len(ex.args) > 1:
        raise ConfigValidationException(ex.args[1])
      else:
        raise ex