Move DB handling into specialised classes

This keeps CuraContainerRegistry a lot cleaner, especially when more container types are
added

Cura-6096
This commit is contained in:
Jaime van Kessel 2021-08-20 15:40:50 +02:00
parent 27f0fe8bb9
commit e0e8223c5d
5 changed files with 116 additions and 99 deletions

View file

@ -0,0 +1,35 @@
from UM.Settings.DatabaseContainerMetadataController import DatabaseMetadataContainerController
from UM.Settings.InstanceContainer import InstanceContainer
class IntentDatabaseHandler(DatabaseMetadataContainerController):
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="",
select_query = "SELECT * 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 _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"]

View file

@ -0,0 +1,44 @@
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 = "",
select_query = "SELECT * 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 _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"]

View file

@ -0,0 +1,29 @@
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= "",
select_query= "SELECT * 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);"""
)
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"]