From 47a81d42c7501ddfd83e3c58502af938e3f26832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bitard=20Micha=C3=ABl?= <bitard.michael@gmail.com> Date: Mon, 7 Apr 2025 17:39:43 +0200 Subject: [PATCH] lint --- packages/api/src/api/rest/titres.queries.ts | 21 +++++++++++-------- packages/common/src/rest.ts | 13 ++++++++++-- packages/ui/src/components/titre.stories.tsx | 6 +++--- .../components/titre/edit-popup.stories.tsx | 8 +++---- .../titre/titre-abonner-button.stories.tsx | 2 +- .../components/titre/titre-abonner-button.tsx | 6 +++--- .../src/components/titre/titre-api-client.ts | 8 +++---- 7 files changed, 38 insertions(+), 26 deletions(-) diff --git a/packages/api/src/api/rest/titres.queries.ts b/packages/api/src/api/rest/titres.queries.ts index 26bb917f8..2ba314256 100644 --- a/packages/api/src/api/rest/titres.queries.ts +++ b/packages/api/src/api/rest/titres.queries.ts @@ -2,7 +2,7 @@ import { sql } from '@pgtyped/runtime' import { getMostRecentValuePropFromEtapeFondamentaleValide, TitreGet, TitreGetDemarche } from 'camino-common/src/titres' import { EffectDbQueryAndValidateErrors, Redefine, dbQueryAndValidate, effectDbQueryAndValidate } from '../../pg-database' import { - IAddUtilisateurTitreDbQuery, + IAddUtilisateurTitreDbQuery, IDeleteUtilisateurTitreDbQuery, IGetAdministrationsLocalesByTitreIdDbQuery, IGetDemarchesByTitreIdQueryDbQuery, @@ -517,13 +517,16 @@ export const getTitres = (pool: Pool): Effect.Effect<GetTitre[], CaminoError<Eff const getTitresDb = sql<Redefine<IGetTitresDbQuery, {}, GetTitre>>` select t.id from titres t where t.archive is false` +export const updateUtilisateurTitre = (pool: Pool, abonne: boolean, titreId: TitreId, utilisateurId: UtilisateurId): Effect.Effect<void, CaminoError<EffectDbQueryAndValidateErrors>> => + Effect.if(abonne, { + onTrue: () => effectDbQueryAndValidate(addUtilisateurTitreDb, { titreId, utilisateurId }, pool, z.void()), + onFalse: () => effectDbQueryAndValidate(deleteUtilisateurTitreDb, { titreId, utilisateurId }, pool, z.void()), + }) -export const updateUtilisateurTitre = (pool: Pool, abonne: boolean, titreId: TitreId, utilisateurId: UtilisateurId): Effect.Effect<void, CaminoError<EffectDbQueryAndValidateErrors>> => Effect.if(abonne, { - onTrue: () => effectDbQueryAndValidate(addUtilisateurTitreDb, {titreId, utilisateurId}, pool, z.void()), - onFalse: () => effectDbQueryAndValidate(deleteUtilisateurTitreDb, {titreId, utilisateurId}, pool, z.void()), -}) - -const addUtilisateurTitreDb = sql<Redefine<IAddUtilisateurTitreDbQuery, {utilisateurId: UtilisateurId, titreId: TitreId}, void>>`INSERT INTO utilisateurs__titres (utilisateur_id, titre_id) VALUES ($utilisateurId!, $titreId)` - +const addUtilisateurTitreDb = sql< + Redefine<IAddUtilisateurTitreDbQuery, { utilisateurId: UtilisateurId; titreId: TitreId }, void> +>`INSERT INTO utilisateurs__titres (utilisateur_id, titre_id) VALUES ($utilisateurId!, $titreId)` -const deleteUtilisateurTitreDb = sql<Redefine<IDeleteUtilisateurTitreDbQuery, {utilisateurId: UtilisateurId, titreId: TitreId}, void>>`DELETE FROM utilisateurs__titres WHERE utilisateur_id=$utilisateurId! and titre_id=$titreId` +const deleteUtilisateurTitreDb = sql< + Redefine<IDeleteUtilisateurTitreDbQuery, { utilisateurId: UtilisateurId; titreId: TitreId }, void> +>`DELETE FROM utilisateurs__titres WHERE utilisateur_id=$utilisateurId! and titre_id=$titreId` diff --git a/packages/common/src/rest.ts b/packages/common/src/rest.ts index d7b96e78c..b2117f08e 100644 --- a/packages/common/src/rest.ts +++ b/packages/common/src/rest.ts @@ -175,8 +175,17 @@ export const CaminoRestRoutes = { '/rest/statistiques/datagouv': { params: noParamsValidator, get: { output: z.array(statistiquesDataGouvValidator) } }, '/rest/quickAccess': { params: noParamsValidator, newGet: { searchParams: quickAccessSearchParamsValidator, output: quickAccessArrayResultValidator } }, '/rest/titres': { params: noParamsValidator, newPost: { input: titreDemandeValidator, output: titreDemandeOutputValidator } }, - '/rest/titres/:titreId': { params: z.object({ titreId: titreIdOrSlugValidator }), get: { output: titreGetValidator }, delete: true, newPost: { output: z.object({ id: titreIdValidator }), input: editableTitreValidator } }, - '/rest/titres/:titreId/abonne': { params: z.object({ titreId: titreIdValidator }), newPost: { input: utilisateurTitreAbonneValidator, output: z.object({id: titreIdValidator, abonne: z.boolean() }) }, newGet: { output: z.boolean() } }, + '/rest/titres/:titreId': { + params: z.object({ titreId: titreIdOrSlugValidator }), + get: { output: titreGetValidator }, + delete: true, + newPost: { output: z.object({ id: titreIdValidator }), input: editableTitreValidator }, + }, + '/rest/titres/:titreId/abonne': { + params: z.object({ titreId: titreIdValidator }), + newPost: { input: utilisateurTitreAbonneValidator, output: z.object({ id: titreIdValidator, abonne: z.boolean() }) }, + newGet: { output: z.boolean() }, + }, '/rest/titresAdministrations': { params: noParamsValidator, get: { output: z.array(titreAdministrationValidator) } }, '/rest/titresSuper': { params: noParamsValidator, newGet: { output: z.array(superTitreValidator) } }, '/rest/titres/:id/titreLiaisons': { params: z.object({ id: titreIdValidator }), newGet: { output: titreLinksValidator }, newPost: { input: z.array(titreIdValidator), output: titreLinksValidator } }, diff --git a/packages/ui/src/components/titre.stories.tsx b/packages/ui/src/components/titre.stories.tsx index eb97d0f19..4ea689d83 100644 --- a/packages/ui/src/components/titre.stories.tsx +++ b/packages/ui/src/components/titre.stories.tsx @@ -216,10 +216,10 @@ const titre = { } as const satisfies TitreGet const apiClient: PropsApiClient = { - editTitre: (params) => { + editTitre: params => { editTitreAction(params) - return Promise.resolve({id: params.id}) + return Promise.resolve({ id: params.id }) }, deleteDemarche: (...params) => { deleteDemarcheAction(params) @@ -249,7 +249,7 @@ const apiClient: PropsApiClient = { titreUtilisateurAbonne: (params, abonne) => { titreUtilisateurAbonneAction(params, abonne) - return Promise.resolve({id: params, abonne}) + return Promise.resolve({ id: params, abonne }) }, loadLinkableTitres: (...params) => diff --git a/packages/ui/src/components/titre/edit-popup.stories.tsx b/packages/ui/src/components/titre/edit-popup.stories.tsx index 5d2159d0c..bc9bd047a 100644 --- a/packages/ui/src/components/titre/edit-popup.stories.tsx +++ b/packages/ui/src/components/titre/edit-popup.stories.tsx @@ -29,10 +29,10 @@ export const DefaultNoReference: StoryFn = () => ( }} close={close} apiClient={{ - editTitre: (params) => { + editTitre: params => { editTitreAction(params) - return Promise.resolve({id: params.id}) + return Promise.resolve({ id: params.id }) }, }} /> @@ -48,10 +48,10 @@ export const OneReference: StoryFn = () => ( }} close={close} apiClient={{ - editTitre: (params) => { + editTitre: params => { editTitreAction(params) - return Promise.resolve({id: params.id}) + return Promise.resolve({ id: params.id }) }, }} /> diff --git a/packages/ui/src/components/titre/titre-abonner-button.stories.tsx b/packages/ui/src/components/titre/titre-abonner-button.stories.tsx index 8007b5019..403a416be 100644 --- a/packages/ui/src/components/titre/titre-abonner-button.stories.tsx +++ b/packages/ui/src/components/titre/titre-abonner-button.stories.tsx @@ -24,7 +24,7 @@ const apiClient: Pick<TitreApiClient, 'getTitreUtilisateurAbonne' | 'titreUtilis titreUtilisateurAbonne: (...params) => { titreUtilisateurAbonneAction(params) - return Promise.resolve({id: params[0], abonne: params[1]}) + return Promise.resolve({ id: params[0], abonne: params[1] }) }, } const titreId = titreIdValidator.parse('titreId') diff --git a/packages/ui/src/components/titre/titre-abonner-button.tsx b/packages/ui/src/components/titre/titre-abonner-button.tsx index 3c49a312a..7a9f19c49 100644 --- a/packages/ui/src/components/titre/titre-abonner-button.tsx +++ b/packages/ui/src/components/titre/titre-abonner-button.tsx @@ -1,4 +1,4 @@ -import { HTMLAttributes, defineComponent, onMounted, } from 'vue' +import { HTMLAttributes, defineComponent, onMounted } from 'vue' import { TitreId } from 'camino-common/src/validators/titres' import { isNotNullNorUndefined } from 'camino-common/src/typescript-tools' import { User } from 'camino-common/src/roles' @@ -22,9 +22,9 @@ export const TitreAbonnerButton = defineComponent<Props>(props => { if (data.value.status === 'LOADED') { const result = await props.apiClient.titreUtilisateurAbonne(props.titreId, !data.value.value) if ('message' in result) { - setData({status: 'NEW_ERROR', error: result}) + setData({ status: 'NEW_ERROR', error: result }) } else { - setData({status: 'LOADED', value: !data.value.value}) + setData({ status: 'LOADED', value: !data.value.value }) } } } diff --git a/packages/ui/src/components/titre/titre-api-client.ts b/packages/ui/src/components/titre/titre-api-client.ts index b09c196a1..b34c9827b 100644 --- a/packages/ui/src/components/titre/titre-api-client.ts +++ b/packages/ui/src/components/titre/titre-api-client.ts @@ -42,9 +42,9 @@ type TitreForTitresRerchercherByNom = { export interface TitreApiClient { removeTitre: (titreId: TitreId) => Promise<void> - titreUtilisateurAbonne: (titreId: TitreId, abonne: boolean) => Promise<{id: TitreId, abonne: boolean} | CaminoError<string>> + titreUtilisateurAbonne: (titreId: TitreId, abonne: boolean) => Promise<{ id: TitreId; abonne: boolean } | CaminoError<string>> getTitreUtilisateurAbonne: (titreId: TitreId) => Promise<boolean | CaminoError<string>> - editTitre: (titre: EditableTitre) => Promise<{id: TitreId} | CaminoError<string>> + editTitre: (titre: EditableTitre) => Promise<{ id: TitreId } | CaminoError<string>> getTitreById: (titreId: TitreIdOrSlug) => Promise<TitreGet> getTitresForTable: (params: { page?: number @@ -111,13 +111,13 @@ export const titreApiClient: TitreApiClient = { removeTitre: async (titreId: TitreId): Promise<void> => { return deleteWithJson('/rest/titres/:titreId', { titreId }) }, - titreUtilisateurAbonne: async (titreId: TitreId, abonne: boolean): Promise<{id: TitreId, abonne: boolean} | CaminoError<string>> => { + titreUtilisateurAbonne: async (titreId: TitreId, abonne: boolean): Promise<{ id: TitreId; abonne: boolean } | CaminoError<string>> => { return newPostWithJson('/rest/titres/:titreId/abonne', { titreId }, { abonne }) }, getTitreUtilisateurAbonne: async (titreId: TitreId): Promise<boolean | CaminoError<string>> => { return newGetWithJson('/rest/titres/:titreId/abonne', { titreId }) }, - editTitre: (titre: EditableTitre): Promise<{id: TitreId} | CaminoError<string>> => { + editTitre: (titre: EditableTitre): Promise<{ id: TitreId } | CaminoError<string>> => { return newPostWithJson('/rest/titres/:titreId', { titreId: titre.id }, titre) }, getTitreById: (titreId: TitreIdOrSlug): Promise<TitreGet> => { -- GitLab