from ..validator import coerce_string_to_utc_string


CERBERUS_RULE_OPTIONAL_DATETIME_STRING = {
    'type': 'optional_datetime_string',
    'nullable': True,
    'coerce': coerce_string_to_utc_string,
    'default': None
}

# Cerberus schema to validate roles
APIROLE_SCHEMA = {
    'name': {'type': 'url_safe_string', 'required': True, 'empty': False},
    'is_active': {'type': 'boolean', 'default': True},
    'valid_until': CERBERUS_RULE_OPTIONAL_DATETIME_STRING,
    'permissions': {'type': 'dict', 'required': True}
}

# Cerberus schema to validate API users
APIUSER_SCHEMA = {
    'name': {'type': 'url_safe_string', 'required': True, 'empty': False},
    'key': {'type': 'string', 'required': False, 'empty': False, 'nullable': True},
    'is_active': {'type': 'boolean', 'default': True},
    'is_superuser' : {'type': 'boolean', 'default': False},
    'last_login': {'type': 'datetime', 'required': False, 'nullable': True},
    'roles': {
        'type': 'list',
        'required': False,
        'default': [],
        'schema': {
            'type': 'url_safe_string',
            'required': True,
            'empty': False
        }
    }
}
