Properly separate setting state and value for metadata

This commit is contained in:
Gregoo 2025-02-04 10:37:43 +01:00
parent 82b744334f
commit 7ce029029d
4 changed files with 16 additions and 15 deletions

View File

@ -27,6 +27,7 @@ class BrickMetadata(BrickRecord):
select_query: str select_query: str
update_field_query: str update_field_query: str
update_set_state_query: str update_set_state_query: str
update_set_value_query: str
def __init__( def __init__(
self, self,
@ -224,25 +225,25 @@ class BrickMetadata(BrickRecord):
/, /,
*, *,
json: Any | None = None, json: Any | None = None,
state: Any | None = None, value: Any | None = None,
) -> Any: ) -> Any:
if state is None and json is not None: if value is None and json is not None:
state = json.get('value', '') value = json.get('value', '')
if state == '': if value == '':
state = None value = None
parameters = self.sql_parameters() parameters = self.sql_parameters()
parameters['set_id'] = brickset.fields.id parameters['set_id'] = brickset.fields.id
parameters['state'] = state parameters['value'] = value
rows, _ = BrickSQL().execute_and_commit( rows, _ = BrickSQL().execute_and_commit(
self.update_set_state_query, self.update_set_value_query,
parameters=parameters, parameters=parameters,
) )
# Update the status # Update the status
if state is None and not hasattr(self.fields, 'name'): if value is None and not hasattr(self.fields, 'name'):
self.fields.name = 'None' self.fields.name = 'None'
if rows != 1: if rows != 1:
@ -253,12 +254,12 @@ class BrickMetadata(BrickRecord):
)) ))
# Info # Info
logger.info('{kind} value changed to "{name}" ({state}) for set {set} ({id})'.format( # noqa: E501 logger.info('{kind} value changed to "{name}" ({value}) for set {set} ({id})'.format( # noqa: E501
kind=self.kind, kind=self.kind,
name=self.fields.name, name=self.fields.name,
state=state, value=value,
set=brickset.fields.set, set=brickset.fields.set,
id=brickset.fields.id, id=brickset.fields.id,
)) ))
return state return value

View File

@ -12,7 +12,7 @@ class BrickSetStorage(BrickMetadata):
insert_query: str = 'set/metadata/storage/insert' insert_query: str = 'set/metadata/storage/insert'
select_query: str = 'set/metadata/storage/select' select_query: str = 'set/metadata/storage/select'
update_field_query: str = 'set/metadata/storage/update/field' update_field_query: str = 'set/metadata/storage/update/field'
update_set_state_query: str = 'set/metadata/storage/update/state' update_set_value_query: str = 'set/metadata/storage/update/value'
# Self url # Self url
def url(self, /) -> str: def url(self, /) -> str:

View File

@ -1,3 +1,3 @@
UPDATE "bricktracker_sets" UPDATE "bricktracker_sets"
SET "storage" = :state SET "storage" = :value
WHERE "bricktracker_sets"."id" IS NOT DISTINCT FROM :set_id WHERE "bricktracker_sets"."id" IS NOT DISTINCT FROM :set_id

View File

@ -77,9 +77,9 @@ def update_storage(*, id: str) -> Response:
allow_none=True allow_none=True
) )
state = storage.update_set_value(brickset, state=storage.fields.id) value = storage.update_set_value(brickset, value=storage.fields.id)
return jsonify({'value': state}) return jsonify({'value': value})
# Change the state of a tag # Change the state of a tag