Outils pour utilisateurs

Outils du site


articles:informatique:nettoyage_de_la_base_de_donnee_de_pleroma

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
articles:informatique:nettoyage_de_la_base_de_donnee_de_pleroma [25/04/2020 20:53] – [Ceux qui n'ont aucun lien avec les activités ou les objets] antoinevearticles:informatique:nettoyage_de_la_base_de_donnee_de_pleroma [25/04/2020 22:04] (Version actuelle) – [En tenant compte des personnes suivies] antoineve
Ligne 1: Ligne 1:
-====== Suppressions des activités distantes anciennes ====== +====== Suppressions des activités et objets distants anciens ====== 
 +===== Sans tenir compte des personnes suivies =====
 <code sql> <code sql>
 +-- Il est important de d'abord traiter la table activities
 +-- puisqu'ensuite on supprime les objets qui n'ont plus
 +-- de lien avec cette table.
 +--
 +-- 1ère partie pour la table activities
 +--
 DELETE FROM activities DELETE FROM activities
 WHERE local = false  WHERE local = false 
 +AND updated_at < (CURRENT_DATE - INTERVAL '90 days'); -- Ici 90 jours, à ajuster si besoin
 +--
 +-- 2ème partie pour la table objects
 +--
 +DELETE FROM objects 
 +WHERE id NOT IN (SELECT CAST(data->>'context_id' AS BIGINT) FROM activities)
 +AND data->>'actor' NOT LIKE '%pleroma.antoineve.me%' -- Personnaliser le nom de l'instance !
 AND updated_at < (CURRENT_DATE - INTERVAL '90 days'); -- Ici 90 jours, à ajuster si besoin AND updated_at < (CURRENT_DATE - INTERVAL '90 days'); -- Ici 90 jours, à ajuster si besoin
 </code> </code>
-====== Suppresions des objects anciens qui ne sont pas locaux ====== 
- 
-===== Suppression sans tenir compte des personnes suivies ===== 
  
 +===== En tenant compte des personnes suivies =====
 +Seul la première partie de la commande change :
 <code sql> <code sql>
 +-- Il est important de d'abord traiter la table activities
 +-- puisqu'ensuite on supprime les objets qui n'ont plus
 +-- de lien avec cette table.
 +--
 +-- 1ère partie pour la table activities
 +--
 +DELETE FROM activities
 +WHERE local = false 
 +AND updated_at < (CURRENT_DATE - INTERVAL '90 days') -- Ici 90 jours, à ajuster si besoin
 +AND data->>'actor' 
 +NOT IN (
 +SELECT ap_id FROM users WHERE id IN (
 +SELECT following_id FROM following_relationships WHERE follower_id IN (
 +SELECT id FROM users WHERE ap_id LIKE '%pleroma.antoineve.me%' -- Personnaliser le nom de l'instance !
 +AND nickname IS NOT NULL AND nickname NOT LIKE '%fetch%')));
 +--
 +-- 2ème partie pour la table objects
 +--
 DELETE FROM objects  DELETE FROM objects 
 WHERE id NOT IN (SELECT CAST(data->>'context_id' AS BIGINT) FROM activities) WHERE id NOT IN (SELECT CAST(data->>'context_id' AS BIGINT) FROM activities)
Ligne 17: Ligne 47:
 </code> </code>
  
-===== Suppression, sauf ceux des personnes suivies ===== + 
-====== Suppressions de utilisateurs ======+====== Suppressions d'utilisateurs (distants) ======
  
 ===== Ceux qui n'ont aucun lien avec les activités ou les objets ===== ===== Ceux qui n'ont aucun lien avec les activités ou les objets =====
Ligne 25: Ligne 55:
 WHERE ap_id NOT IN ( WHERE ap_id NOT IN (
 SELECT data->>'actor' AS actor FROM objects SELECT data->>'actor' AS actor FROM objects
-WHERE data->>'actor' IS NOT NULL GROUP BY actor HAVING COUNT(*) > 1)+WHERE data->>'actor' IS NOT NULL GROUP BY actor HAVING COUNT(*) > 1) -- Pour dédupliquer 8-)
 AND ap_id NOT IN ( AND ap_id NOT IN (
-SELECT actor FROM activities GROUP BY actor HAVING COUNT(*) > 1);+SELECT actor FROM activities GROUP BY actor HAVING COUNT(*) > 1
 +AND ( 
 +ap_id LIKE '%/u%/%'               -- Certains services ActivityPub 
 +OR ap_id LIKE '%/account%/%'      -- utilisent d'autres termes 
 +OR ap_id LIKE '%/profile/%'       -- pour l'uri du profil utilisateur. 
 +OR ap_id LIKE '%/@/%'             -- Ce filtre permet d'éviter d'effacer 
 +OR ap_id LIKE '%/author/%');      -- des relais, des collections, ...
 </code> </code>
 ===== Ceux qui n'ont aucun followers et ne suivent personnes ===== ===== Ceux qui n'ont aucun followers et ne suivent personnes =====
articles/informatique/nettoyage_de_la_base_de_donnee_de_pleroma.1587847988.txt · Dernière modification : 25/04/2020 20:53 de antoineve