Ce projet a été initialement commencé dans une issue le 8 mars 2024.
Sur un modèle de données SQL qui implémente un système de tags
comme celui décrit ici, je souhaite pouvoir appliquer des filtres qui ressemblent à ceci :
tag_a or tag_b
tag_a and tag_b
tag_a and (not tag_b)
(tag_a and tag_b) or (tag_c and tag_d)
Voici à quels filtres (where
) SQL peuvent ressembler ces filtres :
WHERE contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a', 'tag_b'])
WHERE contacts.tags @> (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a', 'tag_b'])
WHERE
(contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a'])) AND
(NOT (contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a'])))
WHERE
(contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_a', 'tag_b'])) OR
(contacts.tags && (SELECT ARRAY_AGG(id) FROM contact_tags WHERE name = ANY(ARRAY['tag_c', 'tag_d']))
Questions que je me pose :
Todo :