Source code for fastiot.db.mariadb_schema_checks

from enum import Enum

from fastiot.exceptions import SQLSchemaCheckError


[docs]def check_is_enum_represented(connection, sql_query: str, enum: type[Enum]): """ Checks if enum values are in database table. The query must select a single column table with the enum values. :raises SQLSchemaCheckError: raised if an enum is missing. """ with connection.cursor() as cursor: cursor.execute(sql_query) result = cursor.fetchall() enum_value_list = [i.value for i in list(enum)] for row in result: if row[0] not in enum_value_list: raise SQLSchemaCheckError(sql_query) enum_value_list.remove(row[0]) if len(enum_value_list) > 0: raise SQLSchemaCheckError(sql_query)