loopbackio / loopbackio/loopback-datasource-juggler

Allow connectors to use async/await

Ouverte
#1,659 1 commentaire 0 réactions 1 personne assignée Voir sur GitHub

@markirish y travaille déjà.

Depuis le 24/9/2019.

community-contribution feature help wanted major
Langage dominant
JavaScript
Étoiles
282
Forks
366
Merge moyen
17 h 4 min
PR mergées (30 j)
10

Description

I would like to allow connector authors to use async functions instead of the current callback style.

Acceptance criteria

  • Define a new contract for connector: a connector provides a flag indicating whether it's callback based or async/promise based. We assume callbacks when the flag is not set (backward compatibility).
  • All DAO/KVAO methods need to be updated to check what flavor of flow control the connector support and invoke connector methods accordingly. Ideally, there should be a shared helper taking care of implementation details of consuming callback or promise style connectors.
  • Rework Connector and SqlConnector classes provided by loopback-connector to use async functions instead of callbacks everywhere. This is a semver-major change.
  • Rework the documentation for connector authors to use async functions instead of callbacks.
  • Add a new DataSource method execute that supports dual callback/promise API and under the hood calls connector's execute method using the correct style (callback/promise) as provided by the connector. EDIT: The method was already added by https://github.com/strongloop/loopback-datasource-juggler/pull/1671, now we need to update it to support async execute provided by the connector.

Out of scope

Eventually we should update all of our connectors to use the new major version of loopback-connector and switch to async functions. There should be follow-up issues opened (one per the connector repository). Note that connectors using async functions become incompatible with LB 3.x projects (because they don't support connectors exporting async functions), the upgrade must be released as semver-major.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.