From c100476b0a34f5098efc96bf2487f09b66b4a6c4 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Mon, 22 Aug 2022 16:02:10 +0200 Subject: re-enable the functionality to load packages from ZIP file --- .../proxy/state_impl/_operations/prune_packages.py | 62 ++++++++++------------ 1 file changed, 29 insertions(+), 33 deletions(-) (limited to 'src/hydrilla/proxy/state_impl/_operations/prune_packages.py') diff --git a/src/hydrilla/proxy/state_impl/_operations/prune_packages.py b/src/hydrilla/proxy/state_impl/_operations/prune_packages.py index 9c2b1d7..eb0539c 100644 --- a/src/hydrilla/proxy/state_impl/_operations/prune_packages.py +++ b/src/hydrilla/proxy/state_impl/_operations/prune_packages.py @@ -36,61 +36,38 @@ import sqlite3 from pathlib import Path -_remove_mapping_versions_sqls = [ +_remove_item_versions_sqls = [ ''' - CREATE TEMPORARY TABLE removed_mappings( + CREATE TEMPORARY TABLE removed_versions( item_version_id INTEGER PRIMARY KEY ); ''', ''' INSERT INTO - removed_mappings + removed_versions SELECT iv.item_version_id FROM item_versions AS iv - JOIN items AS i USING (item_id) - JOIN mapping_statuses AS ms USING (item_id) JOIN orphan_iterations AS oi USING (repo_iteration_id) WHERE - NOT ms.required; + iv.installed != 'I'; ''', ''' UPDATE mapping_statuses SET active_version_id = NULL WHERE - active_version_id IN removed_mappings; + active_version_id IN removed_versions; ''', ''' DELETE FROM item_versions WHERE - item_version_id IN removed_mappings; + item_version_id IN removed_versions; ''', ''' - DROP TABLE removed_mappings; + DROP TABLE removed_versions; ''' ] -_remove_resource_versions_sql = ''' -WITH removed_resources AS ( - SELECT - iv.item_version_id - FROM - item_versions AS iv - JOIN items AS i - USING (item_id) - JOIN orphan_iterations AS oi - USING (repo_iteration_id) - LEFT JOIN resolved_depended_resources AS rdr - ON rdr.resource_item_id = iv.item_version_id - WHERE - rdr.payload_id IS NULL -) -DELETE FROM - item_versions -WHERE - item_version_id IN removed_resources; -''' - _remove_items_sql = ''' WITH removed_items AS ( SELECT @@ -101,7 +78,7 @@ WITH removed_items AS ( LEFT JOIN mapping_statuses AS ms USING (item_id) WHERE iv.item_version_id IS NULL AND - i.type = 'R' OR ms.enabled = 'N' + (i.type = 'R' OR ms.enabled = 'N') ) DELETE FROM items @@ -160,9 +137,28 @@ WHERE def prune_packages(cursor: sqlite3.Cursor) -> None: assert cursor.connection.in_transaction - for sql in _remove_mapping_versions_sqls: + print('VERSIONS TO DELETE', cursor.execute(''' +SELECT + iv.item_version_id + FROM + item_versions AS iv + JOIN orphan_iterations AS oi USING (repo_iteration_id) + WHERE + iv.installed != 'I'; +''').fetchall()) + for sql in _remove_item_versions_sqls: cursor.execute(sql) - cursor.execute(_remove_resource_versions_sql) + print('ITEMS TO DELETE', cursor.execute(''' +SELECT + i.item_id + FROM + items AS i + LEFT JOIN item_versions AS iv USING (item_id) + LEFT JOIN mapping_statuses AS ms USING (item_id) + WHERE + iv.item_version_id IS NULL AND + (i.type = 'R' OR ms.enabled = 'N'); +''').fetchall()) cursor.execute(_remove_items_sql) cursor.execute(_remove_files_sql) cursor.execute(_remove_repo_iterations_sql) -- cgit v1.2.3