import json from datetime import datetime, timedelta from typing import Optional from dapd_db_schema.schemas import workflow as schema from dapd_public_api_scraper.utils.misc import utcnow def get_json_from_path(path: str) -> dict: with open(path, 'r') as _file: return json.load(_file) def get_playlist( name: str, label: str, id: str, data_source_id: int, storefront_id: str, created_at: Optional[datetime] = None, updated_at: Optional[datetime] = None, expired_at: Optional[datetime] = None, snapshot_id: str = '', ttl_priority_id: int = 5, is_removed: bool = False, is_removed_expired_at: Optional[datetime] = None, is_personalized: bool = False, ) -> schema.Playlist: return schema.Playlist( id=id, data_source_id=data_source_id, name=name, label=label, storefront_id=storefront_id, created_at=created_at, updated_at=updated_at, expired_at=expired_at, snapshot_id=snapshot_id, ttl_priority_id=ttl_priority_id, is_removed=is_removed, is_removed_expired_at=is_removed_expired_at, is_personalized=is_personalized, ) def get_track( name: str, label: str, id: str, data_source_id: int, created_at: Optional[datetime] = None, updated_at: Optional[datetime] = None, expired_at: Optional[datetime] = None, ttl_id: int = 9, is_removed: bool = False, is_removed_expired_at: Optional[datetime] = None, ) -> schema.Track: return schema.Track( id=id, data_source_id=data_source_id, name=name, label=label, created_at=created_at, updated_at=updated_at, expired_at=expired_at, ttl_id=ttl_id, is_removed=is_removed, is_removed_expired_at=is_removed_expired_at, ) def get_album( name: str, label: str, id: str, data_source_id: int, created_at: Optional[datetime] = None, updated_at: Optional[datetime] = None, expired_at: Optional[datetime] = None, ttl_id: int = 9, is_removed: bool = False, is_removed_expired_at: Optional[datetime] = None, ) -> schema.Album: return schema.Album( id=id, data_source_id=data_source_id, name=name, label=label, created_at=created_at, updated_at=updated_at, expired_at=expired_at, ttl_id=ttl_id, is_removed=is_removed, is_removed_expired_at=is_removed_expired_at, ) def get_artist( name: str, label: str, id: str, data_source_id: int, created_at: Optional[datetime] = None, updated_at: Optional[datetime] = None, expired_at: Optional[datetime] = None, ttl_priority_id: int = 5, is_removed: bool = False, is_removed_expired_at: Optional[datetime] = None, ) -> schema.Artist: return schema.Artist( id=id, data_source_id=data_source_id, name=name, label=label, created_at=created_at, updated_at=updated_at, expired_at=expired_at, ttl_priority_id=ttl_priority_id, is_removed=is_removed, is_removed_expired_at=is_removed_expired_at, ) def get_storefront( id: str, data_source_id: int, name: str, ) -> schema.Storefront: created_at = utcnow() expired_at = created_at + timedelta(days=180) return schema.Storefront( id=id, data_source_id=data_source_id, name=name, created_at=created_at, expired_at=expired_at, ttl_id=9 )