Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/db.py
Show First 20 Lines • Show All 476 Lines • ▼ Show 20 Lines | ) -> None: | ||||
) | ) | ||||
def origin_visit_add_with_id(self, origin_visit: OriginVisit, cur=None) -> None: | def origin_visit_add_with_id(self, origin_visit: OriginVisit, cur=None) -> None: | ||||
"""Insert origin visit when id are already set | """Insert origin visit when id are already set | ||||
""" | """ | ||||
ov = origin_visit | ov = origin_visit | ||||
assert ov.visit is not None | assert ov.visit is not None | ||||
# doing an extra query like this is way simpler than trying to join | |||||
# the origin id in the query below | |||||
origin_id = next(self.origin_id_get_by_url([ov.origin])) | |||||
origin_visit_cols = ["origin", "visit", "date", "type"] | |||||
cur = self._cursor(cur) | cur = self._cursor(cur) | ||||
query = """INSERT INTO origin_visit ({cols}) VALUES ({values}) | origin_visit_cols = ["origin", "visit", "date", "type"] | ||||
query = """INSERT INTO origin_visit ({cols}) | |||||
VALUES ((select id from origin where url=%s), {values}) | |||||
ON CONFLICT (origin, visit) DO NOTHING""".format( | ON CONFLICT (origin, visit) DO NOTHING""".format( | ||||
cols=", ".join(origin_visit_cols), | cols=", ".join(origin_visit_cols), | ||||
values=", ".join("%s" for col in origin_visit_cols), | values=", ".join("%s" for col in origin_visit_cols[1:]), | ||||
) | |||||
cur.execute( | |||||
query, (origin_id, ov.visit, ov.date, ov.type), | |||||
) | ) | ||||
cur.execute(query, (ov.origin, ov.visit, ov.date, ov.type)) | |||||
origin_visit_get_cols = [ | origin_visit_get_cols = [ | ||||
"origin", | "origin", | ||||
"visit", | "visit", | ||||
"date", | "date", | ||||
"type", | "type", | ||||
"status", | "status", | ||||
"metadata", | "metadata", | ||||
▲ Show 20 Lines • Show All 786 Lines • Show Last 20 Lines |