EcrituresNumeriques / stylo

Stylo est un éditeur de textes pour articles scientifiques en sciences humaines et sociales.
https://stylo.huma-num.fr
GNU General Public License v3.0
51 stars 12 forks source link

Supprimer la relation bi-directionnelle entre tags et articles #863

Open ggrossetie opened 1 year ago

ggrossetie commented 1 year ago

Actuellement, on enregistre en base de données la liste des articles sur un tag et la liste des tags sur un article. Je pense que l'on peut supprimer la liste des articles sur un tag.

D'un point de vue API GraphQL, je pense qu'il est préférable de raisonner en terme d'articles:

query GetDraftArticles {
  articles (filter: { tags: ["Draft"] }) {
    _id
    title
    updatedAt
  }
}

Plutôt qu'en terme de tag:

query GetDraftArticles {
  tags (name: "Draft" }) {
    articles {
      _id
      title
      updatedAt
    }
  }
}

Pour référence, voici la définition GraphQL correspondante :

type ArticlesFilters = {
  tags: [TagName!]
  ids: [ID!]
}

type ArticlesInput = {
  filter: ArticlesFilters
}

type Query {
  article(id: ID!): Article
  articles(input: ArticlesInput): [Article]! 
}
marviro commented 1 year ago

Ça a du sens, en effet. Moi par contre j'utilise cette query ({tags{articles}}) actuellement dans une ou deux applications. Tu me laisses, stp, le temps de changer mon code et de tester l'autre approche?

marviro commented 1 year ago

Bon, est-ce que la query:

query GetDraftArticles {
  articles (filter: { tags: ["Draft"] }) {
    _id
    title
    updatedAt
  }
}

est déjà supposée fonctionner? Car quand je la teste sur le playground j'ai une erreur: Unknown argument filter on field articles on type query. Merci et désolé pour mon incompétence

ggrossetie commented 1 year ago

Non c'est une proposition. On peut d'ailleurs ne pas changer l'API GraphQL mais "simplement" faire les modifications pour supprimer le lien dans la base de données.

marviro commented 1 year ago

Ok. Du coup je suis tout à fait d'accord. Merci!