Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/postgresql/db.py
Show First 20 Lines • Show All 1,260 Lines • ▼ Show 20 Lines | |||||
_raw_extrinsic_metadata_select_query = f""" | _raw_extrinsic_metadata_select_query = f""" | ||||
SELECT | SELECT | ||||
{', '.join(raw_extrinsic_metadata_get_cols)} | {', '.join(raw_extrinsic_metadata_get_cols)} | ||||
FROM raw_extrinsic_metadata | FROM raw_extrinsic_metadata | ||||
INNER JOIN metadata_authority | INNER JOIN metadata_authority | ||||
ON (metadata_authority.id=authority_id) | ON (metadata_authority.id=authority_id) | ||||
INNER JOIN metadata_fetcher ON (metadata_fetcher.id=fetcher_id) | INNER JOIN metadata_fetcher ON (metadata_fetcher.id=fetcher_id) | ||||
WHERE raw_extrinsic_metadata.target=%s AND authority_id=%s | |||||
""" | """ | ||||
def raw_extrinsic_metadata_add( | def raw_extrinsic_metadata_add( | ||||
self, | self, | ||||
id: bytes, | id: bytes, | ||||
type: str, | type: str, | ||||
target: str, | target: str, | ||||
discovery_date: datetime.datetime, | discovery_date: datetime.datetime, | ||||
Show All 39 Lines | def raw_extrinsic_metadata_get( | ||||
target: str, | target: str, | ||||
authority_id: int, | authority_id: int, | ||||
after_time: Optional[datetime.datetime], | after_time: Optional[datetime.datetime], | ||||
after_fetcher: Optional[int], | after_fetcher: Optional[int], | ||||
limit: int, | limit: int, | ||||
cur, | cur, | ||||
): | ): | ||||
query_parts = [self._raw_extrinsic_metadata_select_query] | query_parts = [self._raw_extrinsic_metadata_select_query] | ||||
query_parts.append("WHERE raw_extrinsic_metadata.target=%s AND authority_id=%s") | |||||
args = [target, authority_id] | args = [target, authority_id] | ||||
if after_fetcher is not None: | if after_fetcher is not None: | ||||
assert after_time | assert after_time | ||||
query_parts.append("AND (discovery_date, fetcher_id) > (%s, %s)") | query_parts.append("AND (discovery_date, fetcher_id) > (%s, %s)") | ||||
args.extend([after_time, after_fetcher]) | args.extend([after_time, after_fetcher]) | ||||
elif after_time is not None: | elif after_time is not None: | ||||
query_parts.append("AND discovery_date > %s") | query_parts.append("AND discovery_date > %s") | ||||
args.append(after_time) | args.append(after_time) | ||||
query_parts.append("ORDER BY discovery_date, fetcher_id") | query_parts.append("ORDER BY discovery_date, fetcher_id") | ||||
if limit: | if limit: | ||||
query_parts.append("LIMIT %s") | query_parts.append("LIMIT %s") | ||||
args.append(limit) | args.append(limit) | ||||
cur.execute(" ".join(query_parts), args) | cur.execute(" ".join(query_parts), args) | ||||
yield from cur | yield from cur | ||||
def raw_extrinsic_metadata_get_by_ids(self, ids: List[Sha1Git], cur=None): | |||||
cur = self._cursor(cur) | |||||
yield from execute_values_generator( | |||||
cur, | |||||
self._raw_extrinsic_metadata_select_query | |||||
+ "INNER JOIN (VALUES %s) AS t(id) ON t.id = raw_extrinsic_metadata.id", | |||||
[(id_,) for id_ in ids], | |||||
) | |||||
metadata_fetcher_cols = ["name", "version"] | metadata_fetcher_cols = ["name", "version"] | ||||
def metadata_fetcher_add(self, name: str, version: str, cur=None) -> None: | def metadata_fetcher_add(self, name: str, version: str, cur=None) -> None: | ||||
cur = self._cursor(cur) | cur = self._cursor(cur) | ||||
cur.execute( | cur.execute( | ||||
"INSERT INTO metadata_fetcher (name, version) " | "INSERT INTO metadata_fetcher (name, version) " | ||||
"VALUES (%s, %s) ON CONFLICT DO NOTHING", | "VALUES (%s, %s) ON CONFLICT DO NOTHING", | ||||
(name, version), | (name, version), | ||||
▲ Show 20 Lines • Show All 99 Lines • Show Last 20 Lines |