Faire le branchement du module control dans le sdk - #412
AminJELLADParticeep wants to merge 3 commits into
Conversation
a60ded7 to
633b5ea
Compare
| } | ||
|
|
||
| def audit(id: String, entity_type: String, timeout: Long = defaultTimeOut)(implicit exec: ExecutionContext): Future[Either[ErrorResult, EventControl]] = { | ||
| ws.get[EventControl](s"$endPoint/$entity_type/$id/audit", timeout) |
There was a problem hiding this comment.
En retour on n'a pas une Seq[EventControl] ?
There was a problem hiding this comment.
Une erreur de ma part, je rectifie.
|
|
||
| import ControlClient._ | ||
|
|
||
| def byId(id: String, entity_type: String, timeout: Long = defaultTimeOut)(implicit exec: ExecutionContext): Future[Either[ErrorResult, Control]] = { |
There was a problem hiding this comment.
supprime byId
Si on veut un byId on utilisera byIds avec un unique id en input
There was a problem hiding this comment.
Seul la méthode audit doit retourner un EventControl
Les autres méthodes : create / update / updateBlock / publish devrait retourner l'entité modifiée donc un control ou un ControlView
There was a problem hiding this comment.
Toutes les méthodes que tu cites retournent un EventControl.
Pour les méthodes que tu cites, si je veux respecter ta volonté, ma seule solution serait d'appeler byids pour chaque méthode. On aurait un truc comme ça :
def update(id: String, timeout: Long = defaultTimeOut, control_update: ControlUpdate)(implicit exec: ExecutionContext): Future[Either[ErrorResult, ControlView]] = {
for {
_ <- ws.post[JsValue](s"$endPoint/$id", timeout, Json.toJson(control_update))
controls <- this.byIds(id, timeout)
} yield {
val new_control: Either[ErrorResult, Option[ControlView]] = controls.map(_.find(_.id == id))
new_control match {
case Left(errors) => Left(errors)
case Right(Some(control)) => Right(control)
case Right(None) => Left(Errors(hasError = true, errors = List(Error(technicalCode = "control.not.found", message = "control.not.found"))))
}
}
}
Pourquoi je dis que cela est impossible : je ne peux pas créer un contrôle ou un ContrôleView dynamiquement à partir des données de retour de mes appels à particeep API car particeep API me retourne à chaque fois un EventControl. Et EventControl retourne le delta entre les attributs modifiés et je ne peux pas par exemple déduire la valeur "assigned_to" dans updateBlock. La seule exception est la méthode create qui retourne le contrôle en entier dans le payload de EventControl.
Avec tout ça, que souhaites-tu que je fasse ? Ce que je t'ai dit via mon code ou as-tu une autre idée ?
There was a problem hiding this comment.
Tu imagines trop compliqué
Il faut simplement changer les méthodes de l'API pour retourner un objet et pas un event
There was a problem hiding this comment.
@Driox Qu'entends-tu par objet ?
Tu veux que Particeep API retourne un contrôle pour chaque méthode que tu as citées ? En conséquence changer ControlController ?
No description provided.