implemented

DatabaseObject.indexing_values
for each data objects
This commit is contained in:
Hellow 2023-03-09 20:52:15 +01:00
parent b53548e321
commit 38e7620fbd
2 changed files with 21 additions and 5 deletions

View File

@ -1,17 +1,15 @@
from typing import List, Iterable, Dict, DefaultDict
from typing import List, Iterable, Dict
from collections import defaultdict
from .source import SourceAttribute
from .parents import DatabaseObject
from ..utils import string_processing
class Collection:
"""
This an class for the iterables
This a class for the iterables
like tracklist or discography
"""
_data: List[SourceAttribute]
_data: List[DatabaseObject]
_by_url: dict
_by_attribute: dict

View File

@ -1,3 +1,4 @@
from collections import defaultdict
from typing import Optional, Dict, Type, Tuple, List
import uuid
@ -23,6 +24,23 @@ class DatabaseObject:
self.id: Optional[str] = _id
self.dynamic = dynamic
def __eq__(self, other) -> bool:
if not isinstance(other, type(self)):
return False
temp_attribute_map: Dict[str, set] = defaultdict(set)
# building map with sets
for name, value in self.indexing_values:
temp_attribute_map[name].add(value)
# check against the attributes of the other object
for name, other_value in other.indexing_values:
if other_value in temp_attribute_map[name]:
return True
return False
@property
def indexing_values(self) -> List[Tuple[str, object]]: