-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Modularisation et utilisation d'un fichier GraphQL pour composer la liste des articles #703
Conversation
✅ Deploy Preview for stylo-dev ready!
To edit notification comments on pull requests, go to your Netlify site settings. |
@@ -0,0 +1,58 @@ | |||
query ($user: ID!) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oui c'est clairement mieux d'avoir la requête à part 👍🏻
Surtout qu'il doit y avoir des outils permettant de faciliter l'édition via un IDE.
@Mogztter Le commit le plus intéressant est f1eda5f : je déplace la En déplaçant la logique 1) dans un hook pré-suppression, 2) dans une transaction, on va aussi pouvoir écrire des tests tout en réduisant la complexité du backend. |
f1eda5f
to
a5e0bcc
Compare
Oui j'utilise la même stratégie sur les "groups" (teams) pour ajouter un article ou supprimer un membre. Cela rends le code tout de suite plus simple car on évite de dupliquer la logique de contrôle 💯 |
Intéressant 🤔 |
Et bien… c'est dur sans monter de base de données :-( |
Avec les derniers commits, j'ai :
Je m'arrête là sur ce sujet, mais c'est très marrant ! |
80e09ae
to
316e068
Compare
Also, move deletion logic to a pre.remove hook within a transaction.
Let's regroup the logic at the model level
When primary and tertiary are empty then.
Also, add EmailAddress scalar
$user: ID! | ||
$tag: ID! | ||
$color: String! | ||
$color: HexColorCode! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
c'est un type par défaut de GraphQL ?? 🤯
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Non j'ai ajouté le module graphql-scalars
pour gagner en finesse dessus. Ce qui a permis de typer les dates d'ailleurs !
@@ -131,7 +131,7 @@ articleSchema.methods.addTags = async function addTags (...tagIds) { | |||
{ safe: true } | |||
) | |||
|
|||
return this.save() | |||
return this.save({ timestamps: false }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
on mettait à jour la date de dernière modification sur le tag alors qu'on associe le tag à un article c'est ça ? si c'est le cas bien vu 👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Exactement mais sur l'article (ajouter/enlever un tag faisait que l'article était considéré comme modifié).
@@ -49,7 +49,7 @@ export function ArticleSaveState ({ state, updatedAt, stateMessage }) { | |||
|
|||
const [savedAgo, isoString] = useMemo(() => ([ | |||
formatTimeAgo(updatedAt), | |||
new Date(parseInt(updatedAt, 10)).toISOString() | |||
new Date(updatedAt).toISOString() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍🏻
Comme j'ai pas mal touché à GraphQL pour l'implémentation des "workspaces", je pense que c'est mieux que ce changement passe en premier car il y a plus de changements que sur ma branche. J'ai fais une revue par commit mais c'est effectivement assez dense car il y a pas mal de choses : resolutions d'anomalies, améliorations, changements sur l'UI... tu as été prolifique ! |
Otherwise an undefined version would appear as undefined
Essentially to speed up the 19 seconds install time of the frontend
ced6840
to
d66e70b
Compare
Also, derives sommaire from markdown content on assignment
C'est un peu un proof of concept, pour voir si c'est intéressant à appliquer sur le reste de l'appli front.Toutes les requêtes GraphQL ont été extraites. Ça a permis de virer pas mal de services, qui n'ajoutaient plus grand chose depuis qu'il y a le hookuseGraphQL
(sessionToken
etgraphqlEndpoint
y sont récupérés depuis le store).Ça demanderait encore à retravailler certaines requêtes (passer par des mutations imbriquées plutôt que des rootMutations) mais ça commence à faire un changement assez épais 😅
Todo
articles(user)
Suites
swr
(comme dans Utilisation du service d'export Pandoc (ecrinum/stylo/stylo-export
) pour les articles #676, cf Simplification du code d'accès aux données via l'API GraphQL #704) pour réduire encore l'encombrement de la récupération de données dans l'interface (exituseEffect
, gestion des erreurs intégrée, etc.)article.isSharedWith(user)
,user.hasGrantedAccessTo(anotherUser)
etc.) vs. les vérifications difficiles à tester dans les resolvers GraphQL