From 40e39981c511823df24da419799a84d7f8b88280 Mon Sep 17 00:00:00 2001 From: Melody Horn Date: Sun, 11 Apr 2021 22:21:29 -0600 Subject: store info in an actual database --- repos/base.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'repos/base.py') diff --git a/repos/base.py b/repos/base.py index c20853a..1b4c42b 100644 --- a/repos/base.py +++ b/repos/base.py @@ -1,6 +1,5 @@ from dataclasses import dataclass, asdict as dataclass_asdict from functools import total_ordering -import gzip import json from pathlib import Path import re @@ -9,6 +8,8 @@ from typing import Any, Callable, Mapping, Optional import requests import semver +from . import db + __all__ = [ 'Repository', 'slug', @@ -79,7 +80,7 @@ class Repository: def _cache_file(self, name: str) -> Path: return self._cache_dir() / name - def get_versions(self) -> Mapping[str, Version]: + def update(self): self._cache_dir().mkdir(parents=True, exist_ok=True) headers = dict() @@ -109,12 +110,11 @@ class Repository: set_etag = response.headers['ETag'] etag_file.write_text(set_etag) - parsed_file = self._cache_file('parsed.json.gz') - if response.status_code != requests.codes.not_modified or not parsed_file.exists(): parsed_data = self.parse(downloaded_file) - with gzip.open(parsed_file, 'wt') as f: - json.dump(parsed_data, f, cls=JSONEncoder) - return parsed_data - else: - with gzip.open(parsed_file, 'rt') as f: - return json.load(f, cls=JSONDecoder) + db.write(self.full_name(), parsed_data) + + def get_version(self, package_name: str) -> Optional[Version]: + db_result = db.read(self.full_name(), package_name) + if db_result is None: + return None + return Version(**db_result) -- cgit v1.2.3