Lister qui a mis en sourdine / ignoré les utilisateurs

Salut les amis ! :smiley:

Est-il possible, en utilisant l’explorateur de données, d’afficher dans un tableau qui a mis en sourdine ou ignoré quels utilisateurs, et par qui ?

Si quelqu’un pouvait donner un coup de main, je serais vraiment reconnaissant.e :heart:
Merci

Je n’ai jamais vu cette fonctionnalité auparavant, et je doute qu’elle soit ajoutée, car cela pourrait compromettre les bonnes pratiques en matière de confidentialité et de sécurité.

Essayez :

SELECT id AS user_id, muted_users, ignored_users
FROM (
  SELECT u.id,
    ARRAY_AGG(m.muted_user_id)
      FILTER (WHERE m.muted_user_id IS NOT NULL) AS muted_users,
    ARRAY_AGG(i.ignored_user_id)
      FILTER (WHERE i.ignored_user_id IS NOT NULL) AS ignored_users
  FROM users u
  LEFT JOIN ignored_users i ON u.id = i.user_id
  LEFT JOIN muted_users m ON u.id = m.user_id
  GROUP BY u.id
) data
WHERE (muted_users IS NOT NULL OR ignored_users IS NOT NULL)

Ou, si vous souhaitez une liste de noms d’utilisateurs plutôt que des identifiants, essayez :

SELECT id AS user_id, muted_users, ignored_users FROM (
  SELECT u.id,
    ARRAY_AGG(muteds.username)
      FILTER (WHERE muteds.username IS NOT NULL)  AS muted_users,
    ARRAY_AGG(ignores.username)
      FILTER (WHERE ignores.username IS NOT NULL) AS ignored_users
  FROM users u
  LEFT JOIN (
    SELECT i.user_id AS id, u1.username
    FROM users u1
    INNER JOIN ignored_users i ON u1.id = i.ignored_user_id) ignores
  ON u.id = ignores.id
  LEFT JOIN (
    SELECT m.user_id AS id, u1.username
    FROM users u1
    INNER JOIN muted_users m ON u1.id = m.muted_user_id) muteds
  ON u.id = muteds.id
  GROUP BY u.id
) data
WHERE (muted_users IS NOT NULL OR ignored_users IS NOT NULL)

Merci Robert d’avoir créé la requête ! Celle basée sur le nom d’utilisateur nous convient mieux.
Bonne journée !