add JDMI service and module #12
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
banquise/intra-back!12
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "6-jdmi"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
WIP: add JDMI service and moduleto add JDMI service and module@ -0,0 +16,4 @@@ApplicationScoped@Path("/jdmi")class TestJDMI (Renomer ici, on va rester dans le package (dossier) rest, avec des nom clairs, JdmiResource.kt (same pour la classe)
@ -0,0 +20,4 @@private val jdmiService: JdmiService,private val siteService: SiteService){@Path("/get/{id}")par nommenclature, pas besoin de mettre /get t'as deja le "verbe" dans la mathode (@GET), donc ici juste un
/{id}@ -0,0 +28,4 @@.build()}@Path("/getbysite/{id}")Alors ici c'est pas clair, c'est dans la meme categorie que jdmi pour l'id, mais ici c'est pour le site, donc pas sa place dans le fichier jdmi
@ -0,0 +31,4 @@@Path("/getbysite/{id}")@GETfun testBySite(@PathParam("id") id: Int): Response {var site: SiteModel = siteService.getObjById(id)Pas de var ici, tu changes pas ton objet
@ -0,0 +40,4 @@@Path("/getAll")@GETfun testAll(): Response {pareil qu'avant, pas de getAll, implicitement le getAll se fait sur la resource de base (ici /jdmi). C'est dans cet endpoint que tu peux ajouter des filtres avec des query params, par exemple pour by site tu rajoute ?site=... sur le getAll pour avoir toutes les jdmi qui sont associe au site
@ -0,0 +46,4 @@.build()}@Path("/create")Pareil, pas de
/createjuste un post sur le/jdmisuffit et c'est implicitement dis que tu creeais une resource, via ton post@ -0,0 +55,4 @@.build()}@Path("/update/{id}")pas de update ici, juste /{id} et pas un
POSTmais unPUT(dans le cas ou tu modifie toute l'entite, si c'est juste une champ theoriquement ca devrait etre unPATCHmais c'est pas si deep)@ -0,0 +66,4 @@}@Path("/delete/{id}")@POSTun
@DELETEet pas de/delete@ -0,0 +1,80 @@package org.la.banquise.intraExactement les memes retours que dans le fichier jdmi
@ -1,5 +1,6 @@package org.la.banquise.intra.common.modelsimport jakarta.enterprise.context.ApplicationScopedC'est un import pas utilise, a remove
@ -0,0 +29,4 @@api(project(":common"))implementation("io.quarkus:quarkus-kotlin")// implementation("io.quarkus:quarkus-oidc")// implementation("io.quarkus:quarkus-security-jpa")Tu peux enlever ces deux la
@ -0,0 +17,4 @@private val siteRepository: SiteRepository) {fun getById(id: Int): GetJdmiResponse {val jdmi: JdmiModel = jdmiRepository.findById(id) ?: return GetJdmiResponse()Theoriquement ici, on va vouloir avec une erreur, un 404 ou une connerie dans le genre, faudrait que j'essaye de faire de la gestion d'erreur un de ces 4, je prefere limite qu'il me pete a la gueule une 500 que de recevoir un objet avec rien dedans. Au pire on le passe en nullable et tu renvoies un null et c'est "moins" pire
@ -0,0 +31,4 @@fun getBySite(site: SiteModel): List<GetJdmiResponse> {val jdmis: List<JdmiModel> = jdmiRepository.findBySite(site)var jdmisReponse: MutableList<GetJdmiResponse> = ArrayList()pas de var, c'est ce qu'il y a a l'interieur de la liste qui change pas la liste en elle meme. Utilise un var sur une liste si tu changes l'objet reel genre
jdmisResponse = listOf(sasnjkcasn). En plus de ca privilegie l'utilisation du kotlin reel et pas du java, avecmutableListOf()@ -0,0 +55,4 @@fun createJdmi(params: CreateJdmiRequest): Int {val site: SiteModel? = siteRepository.findById(params.site) //?: return -1var jdmi = JdmiModel().apply {pas de var
@ -0,0 +70,4 @@}@Transactionalfun updateJdmi(id: Int, params: UpdateJdmiRequest): Int {Au futur, on retournera pas des int dans ces cas la, soit ca passe et tout va bien, soit on va throw qqch
@ -0,0 +75,4 @@val jdmi = jdmiRepository.findById(id) ?: return 404if (params.site != null) {val site = siteRepository.findById(params.site!!)T'utilise jamais ton site la, ca sert a quoi ?
c'est une bonne question
C'est quoi la questio ?
@ -0,0 +14,4 @@private val siteRepository: SiteRepository) {fun getById(id: Int): GetSiteResponse {val site: SiteModel = siteRepository.findById(id) ?: return GetSiteResponse()Pareil, pas de return d'objet vide, soit on explose soit on throw
@ -0,0 +16,4 @@fun getById(id: Int): GetSiteResponse {val site: SiteModel = siteRepository.findById(id) ?: return GetSiteResponse()if (site == null) {Pas utile ici les debug
@ -0,0 +54,4 @@)}fun getAllSites(): List<SiteModel> = siteRepository.getAll()la methode
listAllexiste pour faire ca directement@ -0,0 +8,4 @@@ApplicationScopedclass JdmiRepository : PanacheRepository<JdmiModel> {fun findById(id: Int): JdmiModel? {findById existe deja (mais prends un Long, vu que c'est le type de base de ton @id
@ -0,0 +13,4 @@}fun findBySite(site: SiteModel): List<JdmiModel> {return find("site_id", site).list()enleve la partie .list et mets juste une list() a la place du find
@ -0,0 +16,4 @@return find("site_id", site).list()}fun getAll(): List<JdmiModel> = findAll().list()listall
@ -0,0 +6,4 @@@ApplicationScopedclass SiteRepository : PanacheRepository<SiteModel> {fun findById(id: Int): SiteModel? {findbyid existe deja avec un Long
?
@ -0,0 +18,4 @@return find("name", name).firstResult()}fun getAll(): List<SiteModel> = findAll().list()listall
@ -0,0 +4,4 @@import java.time.LocalDateTimedata class CreateJdmiRequest (var site: Int = 0,Encore un truc qu'on verra peut etre plus tard, mais tu veux pas forcement mettre des valeurs par defaut mais plutot de la verification que t'as tous les champs, ici tu fais le cas contraire, si un champ existe pas ca renvoie quand meme comme si c'etait une bonne requete
@ -0,0 +1,11 @@package org.la.banquise.intra.jdmi.rest.requestdata class CreateSiteRequest(var name: String = "",same
@ -0,0 +4,4 @@import java.time.LocalDateTimedata class GetJdmiResponse (var id: Int = 0,same
@ -0,0 +1,7 @@package org.la.banquise.intra.jdmi.rest.responsedata class GetSiteResponse(var id: Int = 0,same
En general dans les resource, je prefere qu'on specifie le type de retour reel plutot que Response, l'objet direct, sinon l'openapi genere y'a rien dans la response. A part ca dans les resource y'a quelques trucs a fix en plus de ce que je t'ai remonte (surtout sur les actions post, ce qui est renvoye dedans). Y'a d'autres trucs qu'il faut que je mette en place pour d'autre retours, du style les mapper donc c'est pas grave pour cette partie.
Le kls_database.db faut le mettre dans le gitignore il va nous rendre fous sinon
@ -0,0 +1,7 @@package org.la.banquise.intra.jdmi.rest.responsedata class GetSiteResponse(@RegisterForReflection sur tes reponses (pour le build natif)
Edit:
mets les aussi dans les request, just to be sure
@ -0,0 +93,4 @@fun deleteJdmi(id: Int): Int {val jdmi = jdmiRepository.findById(id) ?: return 404jdmiRepository.delete(jdmi)On va plutot venir les "soft delete", ca evite les fausses manip (on a une colonne deleted_at qui est a null de base et si deleted on la mets a l'heure du delete)
flemme de fix je le ferai plus tard
Tes tests ont pas l'air de passer:
@ -0,0 +31,4 @@}@GETfun getBySite(@QueryParam("site") site: Int): Response {Ici c'est un getAll en soit, avec un filtre par site. Donc la fonctonn c'est getAll et ton site c'est un nullable. T'as pas d'endpoints pour tous les avoir sinon.
@ -0,0 +32,4 @@@GET@Produces(MediaType.APPLICATION_JSON)fun getBy(@QueryParam("name") name: String?, @QueryParam(value = "address") address: String?): Response {if (address != null) {Passe le tout dans le service et fait tes checks la bas. Tu peux utiliser une syntaxe kotlin avec
name?.let { tontrucici }. Pareil ici appelle ta fonction getAll@ -0,0 +53,4 @@}fun getAllJdmi(): List<JdmiModel> {return jdmiRepository.getAll()juste listAll ici 😭
@ -0,0 +12,4 @@return list("site", site)}fun getAll(): List<JdmiModel> = listAll()useless en soit
68cd1c0f35to4925bb3f70