outil(protocole) : bloc généré « errors », les erreurs que renvoie l'optimiseur

etm-powersync-gen-protocol-doc sait rendre un bloc `errors` : une table des
methods[].errors puis de x-etm-message-errors (code, méthode, message,
connexion après l'erreur, quand), suivie de ce que le moteur fait d'une
réponse error (x-etm-errors-engine). Aucune prose n'utilise encore le bloc :
--check reste vert sur l'état commité.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Patrick Schurig 2026-10-21 14:00:57 +02:00
parent 73b956d1fc
commit e56485d014

View File

@ -17,7 +17,9 @@ est écrit à la main. `<quoi>` :
- `table:<Méthode>.params` — les params d'une méthode ; - `table:<Méthode>.params` — les params d'une méthode ;
- `table:<Méthode>.result` — son résultat ; - `table:<Méthode>.result` — son résultat ;
- `table:<Composant>` — un schéma de `components.schemas` (un `oneOf` donne une table par branche) ; - `table:<Composant>` — un schéma de `components.schemas` (un `oneOf` donne une table par branche) ;
- `rules` — `x-etm-semantic-rules` ; `reason-codes` — codes émissibles et leurs clés de paramètres. - `rules` — `x-etm-semantic-rules` ; `reason-codes` — codes émissibles et leurs clés de paramètres ;
- `errors` — les erreurs que renvoie l'optimiseur : `methods[].errors`, puis `x-etm-message-errors`
(protocole 1.2), et ce que le moteur fait d'une réponse error (`x-etm-errors-engine`).
Une table déroule les objets EN LIGNE (`declared.minPowerW`) ; un `$ref` renvoie à la table de son Une table déroule les objets EN LIGNE (`declared.minPowerW`) ; un `$ref` renvoie à la table de son
composant. Un `<quoi>` inconnu, une balise sans fin, un bloc imbriqué : erreur (code 2). composant. Un `<quoi>` inconnu, une balise sans fin, un bloc imbriqué : erreur (code 2).
@ -222,7 +224,28 @@ class Rendu:
out.append(f'| `{code}` | {", ".join(f"`{k}`" for k in cles.get(code, [])) or "—"} |') out.append(f'| `{code}` | {", ".join(f"`{k}`" for k in cles.get(code, [])) or "—"} |')
return out return out
def erreurs(self):
messages = self.doc.get('x-etm-message-errors', {})
out = ['| Code | Méthode | `message` | Connexion après l\'erreur | Quand |', '|---|---|---|---|---|']
moteur = []
for m in self.doc.get('methods', []):
for e in m.get('errors', []):
out.append(f'| `{e["code"]}` | {m["name"]} | {self.sens({"description": e.get("message", "")})} | '
f'{e.get("x-etm-connection", "—")} | {self.sens({"description": e.get("data", "")})} |')
if m.get('x-etm-errors-engine'):
moteur.append(f'- **{m["name"]}** : {self.sens({"description": m["x-etm-errors-engine"]})}')
for e in messages.get('items', []):
out.append(f'| `{e["code"]}` | toute | {self.sens({"description": e.get("message", "")})} | '
f'{e.get("x-etm-connection", "—")} | {self.sens({"description": e.get("data", "")})} |')
if messages.get('description'):
out += ['', self.sens(messages)]
if moteur:
out += ['', 'Ce que fait le moteur d\'une réponse error :', ''] + moteur
return out
def bloc(self, quoi): def bloc(self, quoi):
if quoi == 'errors':
return self.erreurs()
if quoi == 'rules': if quoi == 'rules':
return self.regles() return self.regles()
if quoi == 'reason-codes': if quoi == 'reason-codes':