implemented

DatabaseObject.indexing_values
for each data objects
This commit is contained in:
Hellow 2023-03-09 20:44:57 +01:00
parent 0ffb642ac7
commit b53548e321
2 changed files with 17 additions and 14 deletions

View File

@ -43,6 +43,9 @@ class Song(MainObject, SourceAttribute, MetadataAttribute):
Inherits from DatabaseObject, SourceAttribute, and MetadataAttribute classes.
"""
COLLECTION_ATTRIBUTES = ("lyrics_collection", "album_collection", "main_artist_collection", "feature_artist_collection", "source_collection")
SIMPLE_ATTRIBUTES = ("title", "unified_title", "isrc", "length", "tracksort", "genre")
def __init__(
self,
_id: str = None,
@ -74,19 +77,18 @@ class Song(MainObject, SourceAttribute, MetadataAttribute):
self.tracksort: int = tracksort or 0
self.genre: str = genre
self.source_list = source_list or []
self.target_list = target_list or []
self.target_collection: Collection = Collection(
data=target_list,
element_type=Target
)
self.lyrics_collection: Collection = Collection(
data=lyrics_list or [],
map_attributes=[],
data=lyrics_list,
element_type=Lyrics
)
self.album_collection: Collection = Collection(
data=album_list or [],
map_attributes=["title"],
data=album_list,
element_type=Album
)
@ -180,9 +182,6 @@ class Song(MainObject, SourceAttribute, MetadataAttribute):
album_list: List[Type['Album']] = property(fget=lambda self: self.album_collection.copy())
lyrics_list: List[Type[Lyrics]] = property(fget=lambda self: self.lyrics_collection.copy())
COLLECTION_ATTRIBUTES = ("lyrics_collection", "album_collection", "main_artist_collection", "feature_artist_collection")
SIMPLE_ATTRIBUTES = ("title", "isrc", "length", "tracksort", "genre")
"""
All objects dependent on Album

View File

@ -1,4 +1,4 @@
from typing import Optional
from typing import Optional, List, Tuple
from pathlib import Path
from ..utils import shared
@ -14,6 +14,8 @@ class Target(DatabaseObject):
```
"""
SIMPLE_ATTRIBUTES = ("_file", "_path")
def __init__(
self,
file: str = None,
@ -24,12 +26,14 @@ class Target(DatabaseObject):
) -> None:
super().__init__(_id=_id, dynamic=dynamic)
self._file: Path = Path(file)
self._path = path
self._path: Path = Path(path) if relative_to_music_dir else Path(path)
self.is_relative_to_music_dir: bool = relative_to_music_dir
@property
def file_path(self) -> Path:
if self.is_relative_to_music_dir:
return Path(shared.MUSIC_DIR, self._path, self._file)
return Path(self._path, self._file)
@property
def indexing_values(self) -> List[Tuple[str, object]]:
return [('filepath', self.file_path)]