aboutsummaryrefslogtreecommitdiff
path: root/src/hydrilla/proxy/state_impl/_operations/prune_packages.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/hydrilla/proxy/state_impl/_operations/prune_packages.py')
-rw-r--r--src/hydrilla/proxy/state_impl/_operations/prune_packages.py62
1 files changed, 29 insertions, 33 deletions
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)