From ef8ce95da3251a9b15bdda0b9360171e529eeaf0 Mon Sep 17 00:00:00 2001 From: "gwenael.planchon" Date: Wed, 27 Mar 2024 15:18:30 +0100 Subject: [PATCH] ajouter systeme d'abstraction de l'api (DataObject) --- science-quest/src/data/dataObject.js | 17 +++++++++++++ science-quest/src/data/scientifique.js | 33 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 science-quest/src/data/dataObject.js create mode 100644 science-quest/src/data/scientifique.js diff --git a/science-quest/src/data/dataObject.js b/science-quest/src/data/dataObject.js new file mode 100644 index 0000000..0392822 --- /dev/null +++ b/science-quest/src/data/dataObject.js @@ -0,0 +1,17 @@ +export class DataObject{ + constructor(parsedJSON){ + //mettre les données du json directement dans l'objet + Object.keys(parsedJSON).forEach(dataName=>this[dataName]=parsedJSON[dataName]) + //mettre les alias ici + //ex : l'API change _embedded en _objectList mais que l'ancien code utilisait _embedded + //this._objectList = this._embedded + } +} + +export class PagedDataObject extends DataObject{ + constructor(parsedJSON, dataObject){ + super(parsedJSON) + //mettre objets correspondant dans la liste (ex : new Scientifique(obj) dans Scientifiques) + this._embedded=this._embedded.map(obj=>new dataObject(obj)) + } +} \ No newline at end of file diff --git a/science-quest/src/data/scientifique.js b/science-quest/src/data/scientifique.js new file mode 100644 index 0000000..56f26b0 --- /dev/null +++ b/science-quest/src/data/scientifique.js @@ -0,0 +1,33 @@ +import { REST_API } from "@/assets/const" +import { DataObject, PagedDataObject } from "./dataObject" + +export class Scientifique extends DataObject{ + constructor(parsedJSON){ + super(parsedJSON) + //exemple d'alias pour le pendu + this.nomComplet = this.nomComplet ?? this.nom + " " + this.prenom + } + static async get(id){ + const response = await fetch(`${REST_API}/scientifiques/${id}`) + return new this(await response.json()) + } +} + +export class Scientifiques extends PagedDataObject{ + constructor(parsedJSON){ + super(parsedJSON, Scientifique) + } + static async getPage(pageNb, size=10){ + const response = await fetch(`${REST_API}/scientifiques?page=${pageNb}&size=${size}`) + return new this(await response.json()) + } +} + +export class ScientifiqueIndices extends DataObject{ + constructor(parsedJSON){ + super(parsedJSON) + } + static get(id){ + fetch(`${REST_API}/scientifiques/${id}/indices`) + } +} \ No newline at end of file