Investigate libfolk
https://wiki.gnome.org/Projects/Folks
The main interaction class is https://valadoc.org/folks/Folks.IndividualAggregator.html
Individuals is a collection of personas, where personas are the contacts collected via different backend.
With SimpleQuery, we can filter the returned individuals.
A pretty simple example we can find in https://source.puri.sm/Librem5/gnome-contacts/blob/librem5/src/contacts-shell-search-provider.vala
Interaction with libfolks:
- We get a FolksIndividualAggregator which is a singelton via folks_individual_aggregator_dup ()
- with folks_individual_aggregator_get_individuals () we get a GeeMap of Individuals (Contacts)