Changeset 1f5bf2d in flexoentity
- Timestamp:
- 12/08/25 10:00:18 (5 weeks ago)
- Branches:
- master
- Children:
- e230c40
- Parents:
- ea28ca0
- Location:
- flexoentity
- Files:
-
- 3 edited
-
composite_backend.py (modified) (1 diff)
-
domain_manager.py (modified) (2 diffs)
-
entity_manager.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
flexoentity/composite_backend.py
rea28ca0 r1f5bf2d 39 39 @primary.setter 40 40 def primary(self, new_primary): 41 self._primary = new_primary 41 self._primary = new_primary 42 42 43 def add_ backend(self, backend, clear=False):43 def add_sync_backend(self, backend, clear=False): 44 44 """ 45 45 Append an additional backend. -
flexoentity/domain_manager.py
rea28ca0 r1f5bf2d 33 33 ENTITY_CLASS = Domain 34 34 35 def __init__(self, backend, registry=None): 36 super().__init__(backend) 35 def __init__(self, local_backend, staging_backend, permanent_backend, registry=None): 36 super().__init__(local_backend=local_backend, 37 staging_backend=staging_backend, 38 permanent_backend=permanent_backend) 37 39 self._registry = registry 38 40 self._index_by_domain_id = {} … … 50 52 """Rebuild domain_id lookup table from backend contents.""" 51 53 self._index_by_domain_id.clear() 52 for dom in self.backend.load_all(): 53 self._index_by_domain_id[dom.domain_id] = dom 54 for backend in [self.local_backend, self.staging_backend, self.permanent_backend]: 55 for dom in backend.load_all(): 56 self._index_by_domain_id[dom.domain_id] = dom 54 57 55 58 # ------------------------------------------------------------ -
flexoentity/entity_manager.py
rea28ca0 r1f5bf2d 17 17 ENTITY_CLASS = None # must be overridden by subclasses 18 18 19 def __init__(self, backend):19 def __init__(self, local_backend, staging_backend, permanent_backend): 20 20 if self.ENTITY_CLASS is None: 21 21 raise ValueError("Subclasses must define ENTITY_CLASS") … … 23 23 if not issubclass(self.ENTITY_CLASS, FlexoEntity): 24 24 raise TypeError("ENTITY_CLASS must be a subclass of FlexOEntity") 25 self.backend = backend 25 self.local_backend = local_backend 26 self.staging_backend = staging_backend 27 self.permanent_backend = permanent_backend 26 28 27 29 # ------------------------------------------------------------------ … … 32 34 """Insert a new entity.""" 33 35 self._ensure_type(entity) 34 self. backend.save(entity)36 self.local_backend.save(entity) 35 37 36 38 def update(self, entity): 37 39 """Replace an existing entity (same flexo_id).""" 38 40 self._ensure_type(entity) 39 self. backend.update(entity)41 self.local_backend.update(entity) 40 42 41 43 def delete(self, flexo_id: str): 42 44 """Remove entity by string flexo_id.""" 43 self. backend.delete(flexo_id)45 self.local_backend.delete(flexo_id) 44 46 45 47 # ------------------------------------------------------------------ … … 52 54 Returns ENTITY_CLASS instance or None. 53 55 """ 54 return self. backend.load(flexo_id)56 return self.local_backend.load(flexo_id) 55 57 56 58 def all(self): 57 59 """Load all entities as a list of instances.""" 58 return self.backend.load_all() 60 return self.local_backend.load_all() 61 62 def promote_to_staging(self, flexo_id): 63 entity = self.local_backend.load(flexo_id) 64 self.staging_backend.save(entity) 65 66 def promote_to_permanent(self, flexo_id): 67 entity = self.staging_backend.load(flexo_id) 68 self.permanent_backend.save(entity) 69 70 def sync_all(self): 71 # sync staging → local 72 for e in self.staging_backend.load_all(): 73 self.local_backend.save(e) 74 75 # sync permanent → local 76 for e in self.permanent_backend.load_all(): 77 self.local_backend.save(e) 78 self.refresh() 79 59 80 # ------------------------------------------------------------------ 60 81 # Helpers … … 65 86 66 87 def count(self) -> int: 67 return len(self. backend.load_all())88 return len(self.local_backend.load_all()) 68 89 69 90 def add_or_update(self, entity): … … 78 99 79 100 def as_collection(self): 80 return TypedCollection(self.ENTITY_CLASS, items=self. backend.load_all())101 return TypedCollection(self.ENTITY_CLASS, items=self.local_backend.load_all()) 81 102 82 103 # ------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.
