Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/db.py
Show First 20 Lines • Show All 1,144 Lines • ▼ Show 20 Lines | metadata_provider_cols = [ | ||||
"id", | "id", | ||||
"provider_name", | "provider_name", | ||||
"provider_type", | "provider_type", | ||||
"provider_url", | "provider_url", | ||||
"metadata", | "metadata", | ||||
] | ] | ||||
def metadata_provider_add( | def metadata_provider_add( | ||||
self, provider_name, provider_type, provider_url, metadata, cur=None | self, | ||||
): | provider_name: str, | ||||
provider_type: str, | |||||
provider_url: str, | |||||
metadata: Dict, | |||||
cur=None, | |||||
) -> int: | |||||
"""Insert a new provider and return the new identifier.""" | """Insert a new provider and return the new identifier.""" | ||||
cur = self._cursor(cur) | cur = self._cursor(cur) | ||||
insert = """INSERT INTO metadata_provider (provider_name, provider_type, | insert = """ | ||||
INSERT INTO metadata_provider (provider_name, provider_type, | |||||
provider_url, metadata) values (%s, %s, %s, %s) | provider_url, metadata) values (%s, %s, %s, %s) | ||||
RETURNING id""" | ON CONFLICT(provider_type, provider_url) do nothing | ||||
""" | |||||
cur.execute( | cur.execute( | ||||
insert, (provider_name, provider_type, provider_url, jsonize(metadata)) | insert, (provider_name, provider_type, provider_url, jsonize(metadata)) | ||||
) | ) | ||||
return cur.fetchone()[0] | row = self.metadata_provider_get_by_composite_key( | ||||
provider_type, provider_url, cur=cur | |||||
) | |||||
return row[0] | |||||
def metadata_provider_get_by_composite_key( | |||||
self, provider_type: str, provider_url: str, cur=None | |||||
) -> Tuple: | |||||
"""Retrieve metadata provider by its composite primary key. | |||||
""" | |||||
cur = self._cursor(cur) | |||||
cur.execute( | |||||
"""select %s | |||||
from metadata_provider | |||||
where provider_type=%%s and provider_url=%%s""" | |||||
% (",".join(self.metadata_provider_cols)), | |||||
(provider_type, provider_url,), | |||||
) | |||||
return cur.fetchone() | |||||
def metadata_provider_get(self, provider_id, cur=None): | def metadata_provider_get(self, provider_id, cur=None): | ||||
cur = self._cursor(cur) | cur = self._cursor(cur) | ||||
cur.execute( | cur.execute( | ||||
"""select %s | """select %s | ||||
from metadata_provider | from metadata_provider | ||||
where id=%%s """ | where id=%%s """ | ||||
% (",".join(self.metadata_provider_cols)), | % (",".join(self.metadata_provider_cols)), | ||||
Show All 35 Lines |