Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/in_memory.py
Show First 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | from swh.model.model import ( | ||||
SHA1_SIZE, | SHA1_SIZE, | ||||
MetadataAuthority, | MetadataAuthority, | ||||
MetadataAuthorityType, | MetadataAuthorityType, | ||||
MetadataFetcher, | MetadataFetcher, | ||||
MetadataTargetType, | MetadataTargetType, | ||||
RawExtrinsicMetadata, | RawExtrinsicMetadata, | ||||
) | ) | ||||
from swh.model.hashutil import DEFAULT_ALGORITHMS, hash_to_bytes, hash_to_hex | from swh.model.hashutil import DEFAULT_ALGORITHMS, hash_to_bytes, hash_to_hex | ||||
from swh.storage.interface import ListOrder, PagedResult | from swh.storage.interface import ListOrder, PagedResult, VISIT_STATUSES | ||||
from swh.storage.objstorage import ObjStorage | from swh.storage.objstorage import ObjStorage | ||||
from swh.storage.utils import now | from swh.storage.utils import now | ||||
from .converters import origin_url_to_sha1 | from .converters import origin_url_to_sha1 | ||||
from .exc import StorageArgumentException, HashCollision | from .exc import StorageArgumentException, HashCollision | ||||
from .utils import get_partition_bounds_bytes | from .utils import get_partition_bounds_bytes | ||||
from .writer import JournalWriter | from .writer import JournalWriter | ||||
▲ Show 20 Lines • Show All 870 Lines • ▼ Show 20 Lines | class InMemoryStorage: | ||||
def origin_visit_get_latest( | def origin_visit_get_latest( | ||||
self, | self, | ||||
origin: str, | origin: str, | ||||
type: Optional[str] = None, | type: Optional[str] = None, | ||||
allowed_statuses: Optional[List[str]] = None, | allowed_statuses: Optional[List[str]] = None, | ||||
require_snapshot: bool = False, | require_snapshot: bool = False, | ||||
) -> Optional[OriginVisit]: | ) -> Optional[OriginVisit]: | ||||
if allowed_statuses and not set(allowed_statuses).intersection(VISIT_STATUSES): | |||||
raise StorageArgumentException( | |||||
f"Unknown allowed statuses {','.join(allowed_statuses)}, only " | |||||
f"{','.join(VISIT_STATUSES)} authorized" | |||||
) | |||||
ori = self._origins.get(origin) | ori = self._origins.get(origin) | ||||
if not ori: | if not ori: | ||||
return None | return None | ||||
visits = sorted( | visits = sorted( | ||||
self._origin_visits[ori.url], key=lambda v: (v.date, v.visit), reverse=True, | self._origin_visits[ori.url], key=lambda v: (v.date, v.visit), reverse=True, | ||||
) | ) | ||||
for visit in visits: | for visit in visits: | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | class InMemoryStorage: | ||||
def origin_visit_status_get_latest( | def origin_visit_status_get_latest( | ||||
self, | self, | ||||
origin_url: str, | origin_url: str, | ||||
visit: int, | visit: int, | ||||
allowed_statuses: Optional[List[str]] = None, | allowed_statuses: Optional[List[str]] = None, | ||||
require_snapshot: bool = False, | require_snapshot: bool = False, | ||||
) -> Optional[OriginVisitStatus]: | ) -> Optional[OriginVisitStatus]: | ||||
if allowed_statuses and not set(allowed_statuses).intersection(VISIT_STATUSES): | |||||
raise StorageArgumentException( | |||||
f"Unknown allowed statuses {','.join(allowed_statuses)}, only " | |||||
f"{','.join(VISIT_STATUSES)} authorized" | |||||
) | |||||
ori = self._origins.get(origin_url) | ori = self._origins.get(origin_url) | ||||
if not ori: | if not ori: | ||||
return None | return None | ||||
visit_key = (origin_url, visit) | visit_key = (origin_url, visit) | ||||
visits = self._origin_visit_statuses.get(visit_key) | visits = self._origin_visit_statuses.get(visit_key) | ||||
if not visits: | if not visits: | ||||
return None | return None | ||||
▲ Show 20 Lines • Show All 254 Lines • Show Last 20 Lines |