| from abc import ABC, abstractmethod |
| from typing import Dict, List |
|
|
| from scripts.mo.models import Record, ModelType |
|
|
|
|
| def map_dict_to_record(id_, raw: Dict) -> Record: |
| return Record( |
| id_=id_, |
| name=raw['name'], |
| model_type=ModelType.by_value(raw['model_type']), |
| download_url=raw['download_url'], |
| url=raw['url'], |
| download_path=raw['download_path'], |
| download_filename=raw['download_filename'], |
| preview_url=raw['preview_url'], |
| description=raw['description'], |
| positive_prompts=raw['positive_prompts'], |
| negative_prompts=raw['negative_prompts'], |
| sha256_hash=raw['sha256_hash'], |
| md5_hash=raw['md5_hash'], |
| created_at=raw['created_at'], |
| groups=raw['groups'], |
| subdir=raw['subdir'], |
| location=raw['location'], |
| weight=raw['weight'] |
| ) |
|
|
|
|
| def map_record_to_dict(record: Record) -> dict: |
| return { |
| 'id': record.id_, |
| 'name': record.name, |
| 'model_type': record.model_type.value, |
| 'download_url': record.download_url, |
| 'url': record.url, |
| 'download_path': record.download_path, |
| 'download_filename': record.download_filename, |
| 'preview_url': record.preview_url, |
| 'description': record.description, |
| 'positive_prompts': record.positive_prompts, |
| 'negative_prompts': record.negative_prompts, |
| 'sha256_hash': record.sha256_hash, |
| 'md5_hash': record.md5_hash, |
| 'created_at': record.created_at, |
| 'groups': record.groups, |
| 'subdir': record.subdir, |
| 'location': record.location, |
| "weight": record.weight |
| } |
|
|
|
|
| class Storage(ABC): |
|
|
| @abstractmethod |
| def get_all_records(self) -> List: |
| pass |
|
|
| @abstractmethod |
| def query_records(self, name_query=None, groups=None, model_types=None, show_downloaded=None, |
| show_not_downloaded=None) -> List: |
| pass |
|
|
| @abstractmethod |
| def get_record_by_id(self, _id) -> Record: |
| pass |
|
|
| @abstractmethod |
| def add_record(self, record: Record): |
| pass |
|
|
| @abstractmethod |
| def update_record(self, record: Record): |
| pass |
|
|
| @abstractmethod |
| def remove_record(self, _id): |
| pass |
|
|
| @abstractmethod |
| def get_available_groups(self) -> List: |
| pass |
|
|
| @abstractmethod |
| def get_records_by_group(self, group: str) -> List: |
| pass |
|
|
| @abstractmethod |
| def get_all_records_locations(self) -> List: |
| pass |
|
|