Skip to content

enums

Defines statement types and table writing types

StatementType

Bases: StrEnum

Type of Statements we will deal with

Source code in xerini/enums.py
class StatementType(StrEnum):
    """Type of Statements we will deal with"""

    MOVEMENT = auto()
    UPDATE = auto()
    VIEW = auto()
    IGNORE_ME = auto()

    @classmethod
    def from_query_type(cls, smd_qt: Optional[QueryType] = None):
        """Maps QueryTypes to StatementTypes"""
        ans = cls.IGNORE_ME
        if smd_qt in {QueryType.INSERT, QueryType.CREATE}:
            ans = cls.MOVEMENT
        elif smd_qt in {
            QueryType.UPDATE,
            QueryType.DELETE,
            QueryType.ALTER,
            QueryType.DROP,
            QueryType.TRUNCATE,
        }:
            ans = cls.UPDATE
        elif smd_qt == QueryType.SELECT:
            ans = cls.VIEW
        else:
            pass
        return ans

from_query_type(smd_qt=None) classmethod

Maps QueryTypes to StatementTypes

Source code in xerini/enums.py
@classmethod
def from_query_type(cls, smd_qt: Optional[QueryType] = None):
    """Maps QueryTypes to StatementTypes"""
    ans = cls.IGNORE_ME
    if smd_qt in {QueryType.INSERT, QueryType.CREATE}:
        ans = cls.MOVEMENT
    elif smd_qt in {
        QueryType.UPDATE,
        QueryType.DELETE,
        QueryType.ALTER,
        QueryType.DROP,
        QueryType.TRUNCATE,
    }:
        ans = cls.UPDATE
    elif smd_qt == QueryType.SELECT:
        ans = cls.VIEW
    else:
        pass
    return ans

TableWriteType

Bases: StrEnum

Type of writing being done by a statement

Source code in xerini/enums.py
class TableWriteType(StrEnum):
    """Type of writing being done by a statement"""

    UPDATING = auto()
    REBUILDING = auto()
    DELETING = auto()
    NO_WRITING = auto()

    @classmethod
    def from_statement_query(
        cls, stmt_tp: StatementType, qry_tp: Optional[QueryType] = None
    ):
        """Maps (StatementType, QueryType) to TableWriteType"""
        ans = TableWriteType.NO_WRITING
        if stmt_tp in {StatementType.UPDATE, StatementType.MOVEMENT} and qry_tp in {
            QueryType.INSERT,
            QueryType.UPDATE,
            QueryType.ALTER,
        }:
            ans = TableWriteType.UPDATING
        elif qry_tp in {QueryType.CREATE}:
            ans = TableWriteType.REBUILDING
        elif qry_tp in {QueryType.DROP, QueryType.TRUNCATE, QueryType.DELETE}:
            ans = TableWriteType.DELETING
        else:
            pass
        return ans

from_statement_query(stmt_tp, qry_tp=None) classmethod

Maps (StatementType, QueryType) to TableWriteType

Source code in xerini/enums.py
@classmethod
def from_statement_query(
    cls, stmt_tp: StatementType, qry_tp: Optional[QueryType] = None
):
    """Maps (StatementType, QueryType) to TableWriteType"""
    ans = TableWriteType.NO_WRITING
    if stmt_tp in {StatementType.UPDATE, StatementType.MOVEMENT} and qry_tp in {
        QueryType.INSERT,
        QueryType.UPDATE,
        QueryType.ALTER,
    }:
        ans = TableWriteType.UPDATING
    elif qry_tp in {QueryType.CREATE}:
        ans = TableWriteType.REBUILDING
    elif qry_tp in {QueryType.DROP, QueryType.TRUNCATE, QueryType.DELETE}:
        ans = TableWriteType.DELETING
    else:
        pass
    return ans