Je trouve que ça demande un effort mental un peu trop important en tant que développeur / relecteur de réussir à suivre ce qui vient de data.gouv, de notre BDD, de la session et du lien entre les différents objets, dans tout ce qui touche aux contacts, leurs organisations et leurs datasets.
Un certain nombre de fonctionnalités vont en effet fetcher de la donnée de datagouv en live, puis la remixer avec notre base de données :
Espace producteur pour tout ce qui est «quels datasets je peux éditer»
Page de notifications
Les datasets followers…
L’idée est notamment que la liste des organisations d’un utilisateur peut changer assez rapidement, et que ce qu’on a en BDD comme organisations liées à DB.Contact ne date que de la dernière connexion de chaque utilisateur ou tâche récurrente. Du coup, pour ces fonctionnalités là, on va aller vérifier sur l’API datagouv les organisations (via notamment DB.Dataset.datasets_for_user) de l’utilisateur (qui est un concept légèrement différent du contact) pour ensuite le mélanger avec ce qu’on a en BDD.
Typiquement, ce qu’on va faire c’est donc :
Récupérer les données de l’API datagouv pour connaître les organisations (soit via Datagouvfr.Client.User, soit Datagouvfr.Client.Dataset)
Le mixer ensuite au contenu de la base de données dans les contrôleurs / tâches, par exemple avec la liste des datasets qui sont liés à cette organisation
Enregistrer des trucs en BDD, par exemple des souscriptions de notifications (DB.NotificationSubscription) ou du following (DB.Follower) liés à DB.Contact, mais en se fiant à la donnée live des organsitations qu’on a eu des user qui mirrorent ces contacts, sans utiliser les organisations des contacts en base de donnée pour la cohérence de la donnée.
Une fois qu’on le sait, ça va mieux, il faut notamment se dire que «User» c’est datagouv, et «contact» c’est notre base de données, mais pour aborder le code la première fois c’est dur et même ensuite ça rajoute une charge mentale.
Je ne sais pas si c’est inévitable avec l’existence même de la synchro ou si on peut faire mieux.
Je fais une issue floue à reclarifier plus tard.
Je trouve que ça demande un effort mental un peu trop important en tant que développeur / relecteur de réussir à suivre ce qui vient de data.gouv, de notre BDD, de la session et du lien entre les différents objets, dans tout ce qui touche aux contacts, leurs organisations et leurs datasets.
Un certain nombre de fonctionnalités vont en effet fetcher de la donnée de datagouv en live, puis la remixer avec notre base de données :
L’idée est notamment que la liste des organisations d’un utilisateur peut changer assez rapidement, et que ce qu’on a en BDD comme organisations liées à DB.Contact ne date que de la dernière connexion de chaque utilisateur ou tâche récurrente. Du coup, pour ces fonctionnalités là, on va aller vérifier sur l’API datagouv les organisations (via notamment DB.Dataset.datasets_for_user) de l’utilisateur (qui est un concept légèrement différent du contact) pour ensuite le mélanger avec ce qu’on a en BDD.
Typiquement, ce qu’on va faire c’est donc :
Une fois qu’on le sait, ça va mieux, il faut notamment se dire que «User» c’est datagouv, et «contact» c’est notre base de données, mais pour aborder le code la première fois c’est dur et même ensuite ça rajoute une charge mentale.
Je ne sais pas si c’est inévitable avec l’existence même de la synchro ou si on peut faire mieux.