Skip to content

Commit

Permalink
Remove duplicate schemas for indicateur source and valeur
Browse files Browse the repository at this point in the history
  • Loading branch information
farnoux committed Dec 24, 2024
1 parent b5edcb6 commit 5b1d535
Show file tree
Hide file tree
Showing 58 changed files with 463 additions and 520 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { Referentiel } from '@/api/referentiel/domain/enum.schema';
import { referentielToName } from '@/app/app/labels';
import AccueilCard from '@/app/app/pages/collectivite/EtatDesLieux/Accueil/EtatDesLieux/AccueilCard';
import { makeCollectiviteTousLesIndicateursUrl } from '@/app/app/paths';
import { useFonctionTracker } from '@/app/core-logic/hooks/useFonctionTracker';
import { ReferentielId } from '@/domain/referentiels';
import { Button } from '@/ui';
import { useIndicateurSummary } from '../data/useIndicateurSummary';
import { useOpenDataIndicateursCount } from '../data/useOpenDataIndicateurs';

type IndicateursCardProps = {
collectiviteId: number;
referentielId: Referentiel;
referentielId: ReferentielId;
};

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { Referentiel } from '@/api/referentiel/domain/enum.schema';
import { supabaseClient } from '@/app/core-logic/api/supabase';
import { useCollectiviteId } from '@/app/core-logic/hooks/params';
import { ReferentielId } from '@/domain/referentiels';
import { useQuery } from 'react-query';

const fetchIndicateurSummary = async (
collectivite_id: number,
referentiel: Referentiel
referentiel: ReferentielId
) => {
const { error, data } = await supabaseClient
.from('indicateur_summary')
Expand All @@ -20,7 +20,7 @@ const fetchIndicateurSummary = async (
/**
* Récupère le summary des indicateurs d'un référentiel pour une collectivité donnée
*/
export const useIndicateurSummary = (referentiel: Referentiel) => {
export const useIndicateurSummary = (referentiel: ReferentielId) => {
const collectiviteId = useCollectiviteId();

return useQuery(['indicateur_summary', collectiviteId, referentiel], () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Indicateurs } from '@/api';
import { Valeur } from '@/api/indicateurs/domain';
import { Tooltip } from '@/ui';

/**
Expand All @@ -9,7 +9,8 @@ export const DataSourceTooltip = ({
metadonnee,
children,
}: {
metadonnee: Indicateurs.domain.SourceMetadonnee;
metadonnee: NonNullable<Valeur['source']>;
// metadonnee: ReturnType<typeof transformeValeurs>['metadonnee'];
children: JSX.Element;
}) => {
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,7 @@ export type SourceType = 'resultat' | 'objectif';
/** Item dans une liste d'indicateurs (avant que le détail pour la vignette ne soit chargé) */
export type TIndicateurListItem = Indicateurs.domain.IndicateurListItem;

/** Item détaillé pour la vignette graphique dans une liste d'indicateurs */
export type TIndicateurChartInfo = Indicateurs.domain.IndicateurChartInfo;

export type IndicateurInsert = Indicateurs.domain.IndicateurDefinitionInsert;

export type TIndicateurPredefiniEnfant = TIndicateurPredefini & {
parent: string;
};

export type TIndicateurPredefini =
Indicateurs.domain.IndicateurDefinitionPredefini;

export type TIndicateurPersonnalise =
Indicateurs.domain.IndicateurDefinitionPersonalise;

export type TIndicateurDefinition = Indicateurs.domain.IndicateurDefinition;
4 changes: 2 additions & 2 deletions backend/src/collectivites/shared/models/membre.table.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
} from 'drizzle-orm/pg-core';
import { createInsertSchema } from 'drizzle-zod';
import { authUsersTable } from '../../../auth/models/auth-users.table';
import { referentielEnum } from '../../../referentiels/models/referentiel.enum';
import { referentielIdPgEnum } from '../../../referentiels/models/referentiel.enum';
import { createdAt, modifiedAt } from '../../../utils/column.utils';
import { collectiviteTable } from './collectivite.table';
import { membreFonctionEnum } from './membre-fonction.enum';
Expand All @@ -24,7 +24,7 @@ export const membreTable = pgTable(
.notNull(),
fonction: membreFonctionEnum('fonction'),
detailsFonction: text('details_fonction'),
champIntervention: referentielEnum('champ_intervention').array(),
champIntervention: referentielIdPgEnum('champ_intervention').array(),
estReferent: boolean('est_referent'),
createdAt,
modifiedAt,
Expand Down
19 changes: 11 additions & 8 deletions backend/src/indicateurs/controllers/trajectoire-snbc.e2e-spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CalculTrajectoireResultatMode } from '@/backend/indicateurs/models/calcul-trajectoire.request';
import { CalculTrajectoireResponseType } from '@/backend/indicateurs/models/calcul-trajectoire.response';
import { CalculTrajectoireResponse } from '@/backend/indicateurs/models/calcul-trajectoire.response';
import { INestApplication } from '@nestjs/common';
import { default as request } from 'supertest';
import { getTestApp } from '../../../test/app-utils';
Expand Down Expand Up @@ -27,7 +27,8 @@ describe('Calcul de trajectoire SNBC', () => {
.set('Authorization', `Bearer ${yoloDodoToken}`)
.expect(401)
.expect({
message: "Droits insuffisants, l'utilisateur 17440546-f389-4d4f-bfdb-b0c94a1bd0f9 n'a pas l'autorisation indicateurs.trajectoires.lecture sur la ressource Collectivité 3",
message:
"Droits insuffisants, l'utilisateur 17440546-f389-4d4f-bfdb-b0c94a1bd0f9 n'a pas l'autorisation indicateurs.trajectoires.lecture sur la ressource Collectivité 3",
error: 'Unauthorized',
statusCode: 401,
});
Expand All @@ -39,7 +40,8 @@ describe('Calcul de trajectoire SNBC', () => {
.set('Authorization', `Bearer ${yoloDodoToken}`)
.expect(401)
.expect({
message: "Droits insuffisants, l'utilisateur 17440546-f389-4d4f-bfdb-b0c94a1bd0f9 n'a pas l'autorisation indicateurs.trajectoires.edition sur la ressource Collectivité 3",
message:
"Droits insuffisants, l'utilisateur 17440546-f389-4d4f-bfdb-b0c94a1bd0f9 n'a pas l'autorisation indicateurs.trajectoires.edition sur la ressource Collectivité 3",
error: 'Unauthorized',
statusCode: 401,
});
Expand Down Expand Up @@ -286,7 +288,8 @@ describe('Calcul de trajectoire SNBC', () => {
.set('Authorization', `Bearer ${yoloDodoToken}`)
.expect(401)
.expect({
message: "Droits insuffisants, l'utilisateur 17440546-f389-4d4f-bfdb-b0c94a1bd0f9 n'a pas l'autorisation indicateurs.trajectoires.edition sur la ressource Collectivité 3895",
message:
"Droits insuffisants, l'utilisateur 17440546-f389-4d4f-bfdb-b0c94a1bd0f9 n'a pas l'autorisation indicateurs.trajectoires.edition sur la ressource Collectivité 3895",
error: 'Unauthorized',
statusCode: 401,
});
Expand Down Expand Up @@ -481,7 +484,7 @@ describe('Calcul de trajectoire SNBC', () => {
.get('/trajectoires/snbc?collectiviteId=4936')
.set('Authorization', `Bearer ${yoloDodoToken}`)
.expect(200);
expect((responseCalcul.body as CalculTrajectoireResponseType).mode).toEqual(
expect((responseCalcul.body as CalculTrajectoireResponse).mode).toEqual(
CalculTrajectoireResultatMode.MAJ_SPREADSHEET_EXISTANT
);

Expand Down Expand Up @@ -510,9 +513,9 @@ describe('Calcul de trajectoire SNBC', () => {
.get('/trajectoires/snbc?collectiviteId=4936')
.set('Authorization', `Bearer ${yoloDodoToken}`)
.expect(200);
expect(
(responseRecalcul.body as CalculTrajectoireResponseType).mode
).toEqual(CalculTrajectoireResultatMode.DONNEES_EN_BDD);
expect((responseRecalcul.body as CalculTrajectoireResponse).mode).toEqual(
CalculTrajectoireResultatMode.DONNEES_EN_BDD
);
}, 30000);

it(`Telechargement du modele`, () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,13 @@ import { verificationTrajectoireResponseSchema } from '../models/verification-tr
import TrajectoiresDataService from '../services/trajectoires-data.service';
import TrajectoiresSpreadsheetService from '../services/trajectoires-spreadsheet.service';
import TrajectoiresXlsxService from '../services/trajectoires-xlsx.service';
import { extendApi } from '@anatine/zod-openapi';

/**
* Création des classes de requête/réponse à partir du schema pour générer automatiquement la documentation OpenAPI et la validation des entrées
*/
export class CalculTrajectoireResponseClass extends createZodDto(
calculTrajectoireResponseSchema
extendApi(calculTrajectoireResponseSchema)
) {}

export class CalculTrajectoireRequestClass extends createZodDto(
Expand Down
3 changes: 3 additions & 0 deletions backend/src/indicateurs/index-domain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
// Exports from this file can be imported with `@/domain/*` alias path.

export * from './models/indicateur-definition.table';
export * from './models/indicateur-source-metadonnee.table';
export * from './models/indicateur-source.table';
export * from './models/indicateur-valeur.table';
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
import { extendApi } from '@anatine/zod-openapi';
import { z } from 'zod';
import { indicateurAvecValeursSchema } from './indicateur-valeur.table';

export const calculTrajectoireResponseDonneesSchema = extendApi(
z
.object({
emissionsGes: z.array(indicateurAvecValeursSchema),
consommationsFinales: z.array(indicateurAvecValeursSchema),
sequestrations: z.array(indicateurAvecValeursSchema),
})
.describe('Données de la trajectoire SNBC')
);
export type CalculTrajectoireResponseDonneesType = z.infer<
export const calculTrajectoireResponseDonneesSchema = z
.object({
emissionsGes: z.array(indicateurAvecValeursSchema),
consommationsFinales: z.array(indicateurAvecValeursSchema),
sequestrations: z.array(indicateurAvecValeursSchema),
})
.describe('Données de la trajectoire SNBC');

export type CalculTrajectoireResponseDonnees = z.infer<
typeof calculTrajectoireResponseDonneesSchema
>;
25 changes: 11 additions & 14 deletions backend/src/indicateurs/models/calcul-trajectoire.response.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
import { extendApi } from '@anatine/zod-openapi';
import { z } from 'zod';
import { calculTrajectoireResponseDonneesSchema } from './calcul-trajectoire-response-donnees.dto';
import { CalculTrajectoireResultatMode } from './calcul-trajectoire.request';

export const calculTrajectoireResponseSchema = extendApi(
z
.object({
mode: z.nativeEnum(CalculTrajectoireResultatMode),
sourcesDonneesEntree: z.string().array(),
indentifiantsReferentielManquantsDonneesEntree: z.array(z.string()),
trajectoire: calculTrajectoireResponseDonneesSchema,
})
.describe('Réponse du calcul de la trajectoire SNBC')
);
export type CalculTrajectoireResponseType = z.infer<
export const calculTrajectoireResponseSchema = z
.object({
mode: z.nativeEnum(CalculTrajectoireResultatMode),
sourcesDonneesEntree: z.string().array(),
indentifiantsReferentielManquantsDonneesEntree: z.array(z.string()),
trajectoire: calculTrajectoireResponseDonneesSchema,
})
.describe('Réponse du calcul de la trajectoire SNBC');

export type CalculTrajectoireResponse = z.infer<
typeof calculTrajectoireResponseSchema
>;

export interface CalculTrajectoireResultType
extends CalculTrajectoireResponseType {
export interface CalculTrajectoireResult extends CalculTrajectoireResponse {
spreadsheetId: string;
}
27 changes: 15 additions & 12 deletions backend/src/indicateurs/models/indicateur-definition.table.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,22 @@ export const indicateurDefinitionTable = pgTable('indicateur_definition', {
createdBy,
modifiedBy,
});
export type IndicateurDefinitionType = InferSelectModel<
typeof indicateurDefinitionTable
>;
export type CreateIndicateurDefinitionType = InferInsertModel<
typeof indicateurDefinitionTable
>;

export const indicateurDefinitionSchema = createSelectSchema(
indicateurDefinitionTable
);
export const createIndicateurDefinitionSchema = createInsertSchema(
export type IndicateurDefinition = InferSelectModel<
typeof indicateurDefinitionTable
>;

export const indicateurDefinitionSchemaInsert = createInsertSchema(
indicateurDefinitionTable
);
export const minimaleIndicateurDefinitionSchema =
export type IndicateurDefinitionInsert = InferInsertModel<
typeof indicateurDefinitionTable
>;

export const indicateurDefinitionSchemaEssential =
indicateurDefinitionSchema.pick({
id: true,
identifiantReferentiel: true,
Expand All @@ -66,10 +69,10 @@ export const minimaleIndicateurDefinitionSchema =
borneMin: true,
borneMax: true,
});
export type MinimalIndicateurDefinitionType = z.infer<
typeof minimaleIndicateurDefinitionSchema
export type IndicateurDefinitionEssential = z.infer<
typeof indicateurDefinitionSchemaEssential
>;

export type IndicateurDefinitionAvecEnfantsType = IndicateurDefinitionType & {
enfants: IndicateurDefinitionType[] | null;
export type IndicateurDefinitionAvecEnfantsType = IndicateurDefinition & {
enfants: IndicateurDefinition[] | null;
};
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,19 @@ export const indicateurSourceMetadonneeTable = pgTable(
limites: text('limites'),
}
);
export type IndicateurSourceMetadonneeType = InferSelectModel<
typeof indicateurSourceMetadonneeTable
>;
export type CreateIndicateurSourceMetadonneeType = InferInsertModel<
typeof indicateurSourceMetadonneeTable
>;
export const indicateurSourceMetadonneeSchema = createSelectSchema(

export const sourceMetadonneeSchema = createSelectSchema(
indicateurSourceMetadonneeTable
);
export const createIndicateurSourceMetadonneeSchema = createInsertSchema(

export type SourceMetadonnee = InferSelectModel<
typeof indicateurSourceMetadonneeTable
>;

export const sourceMetadonneeSchemaInsert = createInsertSchema(
indicateurSourceMetadonneeTable
);

export type SourceMetadonneeInsert = InferInsertModel<
typeof indicateurSourceMetadonneeTable
>;
12 changes: 5 additions & 7 deletions backend/src/indicateurs/models/indicateur-source.table.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import { integer, pgTable, text } from 'drizzle-orm/pg-core';
import { InferInsertModel, InferSelectModel } from 'drizzle-orm';
import { integer, pgTable, text } from 'drizzle-orm/pg-core';

export const indicateurSourceTable = pgTable('indicateur_source', {
id: text('id').primaryKey(),
libelle: text('libelle').notNull(),
ordreAffichage: integer('ordre_affichage'),
});
export type IndicateurSourceType = InferSelectModel<
typeof indicateurSourceTable
>;
export type CreateIndicateurSourceType = InferInsertModel<
typeof indicateurSourceTable
>;

export type Source = InferSelectModel<typeof indicateurSourceTable>;

export type SourceInsert = InferInsertModel<typeof indicateurSourceTable>;
Loading

0 comments on commit 5b1d535

Please sign in to comment.