BrickTracker/bricktracker/set_storage_list.py

41 lines
1012 B
Python
Raw Normal View History

2025-02-03 16:46:45 +01:00
import logging
from typing import Self
2025-02-03 23:45:35 +01:00
from flask import current_app
2025-02-03 16:46:45 +01:00
from .metadata_list import BrickMetadataList
from .set_storage import BrickSetStorage
logger = logging.getLogger(__name__)
# Lego sets storage list
class BrickSetStorageList(BrickMetadataList[BrickSetStorage]):
kind: str = 'set storages'
# Queries
select_query = 'set/metadata/storage/list'
2025-02-03 23:45:35 +01:00
all_query = 'set/metadata/storage/all'
2025-02-03 16:46:45 +01:00
# Set state endpoint
set_state_endpoint: str = 'set.update_storage'
2025-02-03 23:45:35 +01:00
# Load all storages
@classmethod
def all(cls, /) -> Self:
new = cls.new()
new.override()
for record in new.select(
override_query=cls.all_query,
order=current_app.config['STORAGE_DEFAULT_ORDER']
):
new.records.append(new.model(record=record))
return new
2025-02-03 16:46:45 +01:00
# Instantiate the list with the proper class
@classmethod
def new(cls, /, *, force: bool = False) -> Self:
return cls(BrickSetStorage, force=force)