diff --git a/cura/Settings/DatabaseHandlers/IntentDatabaseHandler.py b/cura/Settings/DatabaseHandlers/IntentDatabaseHandler.py index 65c966dd9e..17ac715c39 100644 --- a/cura/Settings/DatabaseHandlers/IntentDatabaseHandler.py +++ b/cura/Settings/DatabaseHandlers/IntentDatabaseHandler.py @@ -1,49 +1,22 @@ +from UM.Settings.SQLQueryFactory import SQLQueryFactory from UM.Settings.DatabaseContainerMetadataController import DatabaseMetadataContainerController from UM.Settings.InstanceContainer import InstanceContainer class IntentDatabaseHandler(DatabaseMetadataContainerController): + """The Database handler for Intent containers""" + def __init__(self) -> None: - super().__init__( - insert_query = """ INSERT INTO intents (id, name, quality_type, intent_category, variant, definition, material, version, setting_version) - VALUES (?, ?, ? ,?, ?, ?, ?, ?, ?)""", - update_query="""UPDATE intents - SET name = ?, - quality_type = ?, - intent_category = ?, - variant = ?, - definition = ?, - material = ?, - version = ?, - setting_version = ? - WHERE id = ? - """, - select_query = "SELECT * FROM intents WHERE id = ?", - delete_query = "DELETE FROM intents WHERE id = ?", - table_query="""CREATE TABLE intents - ( - id text, - name text, - quality_type text, - intent_category text, - variant text, - definition text, - material text, - version text, - setting_version text - ); - CREATE UNIQUE INDEX idx_intents_id on intents (id);""" - ) - - def _convertMetadataToUpdateBatch(self, metadata): - return self._convertMetadataToInsertBatch(metadata)[1:] - - def _convertRawDataToMetadata(self, data): - return {"id": data[0], "name": data[1], "quality_type": data[2], "intent_category": data[3], "variant": data[4], "definition": data[5], "container_type": InstanceContainer, "material": data[6], "version": data[7], "setting_version": data[8], "type": "intent"} - - def _convertMetadataToInsertBatch(self, metadata): - return metadata["id"], metadata["name"], metadata["quality_type"], metadata["intent_category"], metadata[ - "variant"], metadata["definition"], metadata["material"], metadata["version"], metadata["setting_version"] - - - + super().__init__(SQLQueryFactory(table = "intents", + fields = { + "id": "text", + "name": "text", + "quality_type": "text", + "intent_category": "text", + "variant": "text", + "definition": "text", + "material": "text", + "version": "text", + "setting_version": "text" + })) + self.container_type = InstanceContainer diff --git a/cura/Settings/DatabaseHandlers/QualityDatabaseHandler.py b/cura/Settings/DatabaseHandlers/QualityDatabaseHandler.py index c6e02e3ac3..286ab19271 100644 --- a/cura/Settings/DatabaseHandlers/QualityDatabaseHandler.py +++ b/cura/Settings/DatabaseHandlers/QualityDatabaseHandler.py @@ -1,59 +1,29 @@ +from typing import Generator + +from UM.Settings.SQLQueryFactory import SQLQueryFactory, metadata_type from UM.Settings.DatabaseContainerMetadataController import DatabaseMetadataContainerController from UM.Settings.InstanceContainer import InstanceContainer class QualityDatabaseHandler(DatabaseMetadataContainerController): - def __init__(self) -> None: - super().__init__( - insert_query = """ INSERT INTO qualities (id, name, quality_type, material, variant, global_quality, definition, version, setting_version) - VALUES (?, ?, ? ,?, ?, ?, ?, ?, ?)""", - update_query = """ UPDATE qualities - SET name = ?, - quality_type = ?, - material = ?, - variant = ?, - global_quality = ?, - definition = ?, - version = ?, - setting_version = ? - WHERE id = ? - """, - select_query = "SELECT * FROM qualities WHERE id = ?", - delete_query = "DELETE FROM qualities WHERE id = ?", - table_query = """CREATE TABLE qualities - ( - id text, - name text, - quality_type text, - material text, - variant text, - global_quality bool, - definition text, - version text, - setting_version text - ); - CREATE UNIQUE INDEX idx_qualities_id on qualities (id);""" - ) - - def _convertMetadataToUpdateBatch(self, metadata): - return self._convertMetadataToInsertBatch(metadata)[1:] - - def _convertRawDataToMetadata(self, data): - return {"id": data[0], "name": data[1], "quality_type": data[2], "material": data[3], "variant": data[4], - "global_quality": data[5], "definition": data[6], "container_type": InstanceContainer, - "version": data[7], "setting_version": data[8], "type": "quality"} - - def _convertMetadataToInsertBatch(self, metadata): - global_quality = False - if "global_quality" in metadata: - global_quality = metadata["global_quality"] - material = "" - if "material" in metadata: - material = metadata["material"] - variant = "" - if "variant" in metadata: - variant = metadata["variant"] - - return metadata["id"], metadata["name"], metadata["quality_type"], material, variant, global_quality, metadata["definition"], metadata["version"], metadata["setting_version"] + """The Database handler for Quality containers""" + def __init__(self): + super().__init__(SQLQueryFactory(table = "qualities", + fields = { + "id": "text", + "name": "text", + "quality_type": "text", + "material": "text", + "variant": "text", + "global_quality": "bool", + "definition": "text", + "version": "text", + "setting_version": "text" + })) + self.container_type = InstanceContainer + def groomMetadata(self, metadata: metadata_type) -> metadata_type: + if "global_quality" not in metadata: + metadata["global_quality"] = "False" + return super().groomMetadata(metadata) diff --git a/cura/Settings/DatabaseHandlers/VariantDatabaseHandler.py b/cura/Settings/DatabaseHandlers/VariantDatabaseHandler.py index c2987df675..4173243afd 100644 --- a/cura/Settings/DatabaseHandlers/VariantDatabaseHandler.py +++ b/cura/Settings/DatabaseHandlers/VariantDatabaseHandler.py @@ -1,40 +1,19 @@ +from UM.Settings.SQLQueryFactory import SQLQueryFactory from UM.Settings.DatabaseContainerMetadataController import DatabaseMetadataContainerController from UM.Settings.InstanceContainer import InstanceContainer class VariantDatabaseHandler(DatabaseMetadataContainerController): - def __init__(self) -> None: - super().__init__( - insert_query = """INSERT INTO variants (id, name, hardware_type, definition, version, setting_version) - VALUES (?, ?, ?, ?, ?, ?)""", - update_query = """ UPDATE variants - SET name = ?, - hardware_type = ?, - definition = ?, - version = ?, - setting_version = ? - WHERE id = ? - """, - select_query = "SELECT * FROM variants WHERE id = ?", - delete_query = "DELETE FROM variants WHERE id = ?", - table_query = """CREATE TABLE variants - ( - id text, - name text, - hardware_type text, - definition text, - version text, - setting_version text - ); - CREATE UNIQUE INDEX idx_variants_id on variants (id);""" - ) + """The Database handler for Variant containers""" - def _convertMetadataToUpdateBatch(self, metadata): - return self._convertMetadataToInsertBatch(metadata)[1:] - - def _convertRawDataToMetadata(self, data): - return {"id": data[0], "name": data[1], "hardware_type": data[2], "definition": data[3], "container_type": InstanceContainer, "version": data[4], "setting_version": data[5], "type": "variant"} - - def _convertMetadataToInsertBatch(self, metadata): - return metadata["id"], metadata["name"], metadata["hardware_type"], metadata["definition"], metadata["version"], \ - metadata["setting_version"] + def __init__(self): + super().__init__(SQLQueryFactory(table = "variants", + fields = { + "id": "text", + "name": "text", + "hardware_type": "text", + "definition": "text", + "version": "text", + "setting_version": "text" + })) + self.container_type = InstanceContainer