Beispiel #1
0
 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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
    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)
Beispiel #7
0
 def test_exception_reserved_invalid_name(self, value, expected):
     with pytest.raises(expected):
         validate_sqlite_attr_name(value)
Beispiel #8
0
 def test_exception_invalid_win_char(self, value):
     with pytest.raises(InvalidCharError):
         validate_sqlite_attr_name(value)
Beispiel #9
0
 def test_normal_non_alphabet_first_char(self, value):
     validate_sqlite_attr_name(value)
Beispiel #10
0
 def test_normal_utf8(self, value):
     validate_sqlite_attr_name(value)
Beispiel #11
0
 def test_normal_ascii(self, value):
     validate_sqlite_attr_name(value)
Beispiel #12
0
    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)