def _validate_header(self, header): try: pv.validate_sqlite_attr_name(header) except (pv.NullNameError, pv.ReservedNameError): pass except pv.InvalidCharError as e: raise InvalidHeaderNameError(e)
def validate_attr_name(name): """ :param str name: Name to validate. :raises InvalidAttributeNameError: |raises_validate_attr_name| """ try: pathvalidate.validate_sqlite_attr_name(name) except pathvalidate.InvalidReservedNameError as e: raise InvalidAttributeNameError(e) except pathvalidate.NullNameError: raise InvalidAttributeNameError("attribute name is empty") except pathvalidate.InvalidCharError as e: raise InvalidAttributeNameError(e)
def validate_attr_name(name): """ :param str name: Name to validate. :raises InvalidAttributeNameError: |raises_validate_attr_name| """ from ._error import InvalidAttributeNameError try: pathvalidate.validate_sqlite_attr_name(name) except pathvalidate.InvalidReservedNameError as e: raise InvalidAttributeNameError(e) except pathvalidate.NullNameError: raise InvalidAttributeNameError("attribute name is empty") except pathvalidate.InvalidCharError as e: raise InvalidAttributeNameError(e)
def to_attr_str(cls, name, operation_query=""): """ :param str name: Attribute name. :param str operation_query: Used as a SQLite function if the value is not empty. :return: String that suitable for attribute name of a SQLite query. :rtype: str :Examples: >>> from simplesqlite.sqlquery import SqlQuery >>> SqlQuery.to_attr_str("key") 'key' >>> SqlQuery.to_attr_str("a+b") '[a+b]' >>> SqlQuery.to_attr_str("key", operation_query="SUM") 'SUM(key)' """ name = cls.sanitize_attr(name) is_quote = cls.__RE_TO_ATTR_QUOTE.search(name) is not None try: pv.validate_sqlite_attr_name(name) except pv.InvalidReservedNameError: is_quote = True except (pv.ValidReservedNameError, pv.NullNameError, pv.InvalidCharError): pass if is_quote: sql_name = '"{:s}"'.format(name) elif cls.__RE_TO_ATTR_BRACKET.search(name): sql_name = "[{:s}]".format(name) elif name == "join": sql_name = "[{:s}]".format(name) else: sql_name = name if typepy.is_not_null_string(operation_query): sql_name = "{:s}({:s})".format(operation_query, sql_name) return sql_name
def to_attr_str(cls, name, operation_query=""): """ :param str name: Attribute name. :param str operation_query: Used as a SQLite function if the value is not empty. :return: String that suitable for attribute name of a SQLite query. :rtype: str :Examples: >>> from simplesqlite.sqlquery import SqlQuery >>> SqlQuery.to_attr_str("key") 'key' >>> SqlQuery.to_attr_str("a+b") '[a+b]' >>> SqlQuery.to_attr_str("key", operation_query="SUM") 'SUM(key)' """ name = cls.sanitize_attr(name) is_quote = cls.__RE_TO_ATTR_QUOTE.search(name) is not None try: pv.validate_sqlite_attr_name(name) except pv.InvalidReservedNameError: is_quote = True except (pv.ValidReservedNameError, pv.NullNameError, pv.InvalidCharError): pass if is_quote: sql_name = '"{:s}"'.format(name) elif cls.__RE_TO_ATTR_BRACKET.search(name): sql_name = "[{:s}]".format(name) elif name == "join": sql_name = "[{:s}]".format(name) else: sql_name = name if typepy.is_not_null_string(operation_query): sql_name = "{:s}({:s})".format(operation_query, sql_name) return sql_name
def __validate_attr_name_list(attr_name_list): if typepy.is_empty_sequence(attr_name_list): raise InvalidAttributeNameError("attribute name list is empty") for attr_name in attr_name_list: pathvalidate.validate_sqlite_attr_name(attr_name)
def test_exception_reserved_invalid_name(self, value, expected): with pytest.raises(expected): validate_sqlite_attr_name(value)
def test_exception_invalid_win_char(self, value): with pytest.raises(InvalidCharError): validate_sqlite_attr_name(value)
def test_normal_non_alphabet_first_char(self, value): validate_sqlite_attr_name(value)
def test_normal_utf8(self, value): validate_sqlite_attr_name(value)
def test_normal_ascii(self, value): validate_sqlite_attr_name(value)
def __validate_attr_name_list(attr_name_list): if typepy.is_empty_sequence(attr_name_list): raise InvalidAttributeNameError("attribute name list is empty") for attr_name in attr_name_list: pathvalidate.validate_sqlite_attr_name(attr_name)