fix: corrige les associations constructeurs

This commit is contained in:
Matthieu
2025-10-28 16:37:06 +01:00
parent 4db64351b7
commit 635ea0e84e
17 changed files with 578 additions and 200 deletions

View File

@@ -73,7 +73,7 @@ type MachineRecord = {
id: string;
name: string;
reference: Nullable<string>;
constructeurId: Nullable<string>;
constructeurIds: string[];
prix: Nullable<string>;
siteId: string;
typeMachineId: Nullable<string>;
@@ -90,7 +90,7 @@ type ComposantRecord = {
parentComposantId: Nullable<string>;
typeComposantId: Nullable<string>;
typeMachineComponentRequirementId: Nullable<string>;
constructeurId: Nullable<string>;
constructeurIds: string[];
createdAt: Date;
updatedAt: Date;
};
@@ -104,7 +104,7 @@ type PieceRecord = {
composantId: Nullable<string>;
typePieceId: Nullable<string>;
typeMachinePieceRequirementId: Nullable<string>;
constructeurId: Nullable<string>;
constructeurIds: string[];
createdAt: Date;
updatedAt: Date;
};
@@ -638,11 +638,12 @@ class InMemoryPrismaService {
machine = {
create: async ({ data, include }: any) => {
const now = new Date();
const constructeurIds = this.extractConstructeurIds(data.constructeurs);
const record: MachineRecord = {
id: generateId('machine'),
name: data.name,
reference: data.reference ?? null,
constructeurId: data.constructeurId ?? null,
constructeurIds,
prix: data.prix ?? null,
siteId: data.siteId,
typeMachineId: data.typeMachineId ?? null,
@@ -683,6 +684,7 @@ class InMemoryPrismaService {
composant = {
create: async ({ data }: any) => {
const now = new Date();
const constructeurIds = this.extractConstructeurIds(data.constructeurs);
const record: ComposantRecord = {
id: generateId('component'),
name: data.name,
@@ -693,7 +695,7 @@ class InMemoryPrismaService {
typeComposantId: data.typeComposantId ?? null,
typeMachineComponentRequirementId:
data.typeMachineComponentRequirementId ?? null,
constructeurId: data.constructeurId ?? null,
constructeurIds,
createdAt: now,
updatedAt: now,
};
@@ -719,6 +721,7 @@ class InMemoryPrismaService {
piece = {
create: async ({ data }: any) => {
const now = new Date();
const constructeurIds = this.extractConstructeurIds(data.constructeurs);
const record: PieceRecord = {
id: generateId('piece'),
name: data.name,
@@ -729,7 +732,7 @@ class InMemoryPrismaService {
typePieceId: data.typePieceId ?? null,
typeMachinePieceRequirementId:
data.typeMachinePieceRequirementId ?? null,
constructeurId: data.constructeurId ?? null,
constructeurIds,
createdAt: now,
updatedAt: now,
};
@@ -767,7 +770,7 @@ class InMemoryPrismaService {
prixOverride:
data.prixOverride !== undefined && data.prixOverride !== null
? String(data.prixOverride)
: data.prixOverride ?? null,
: (data.prixOverride ?? null),
createdAt: now,
updatedAt: now,
};
@@ -819,7 +822,7 @@ class InMemoryPrismaService {
prixOverride:
data.prixOverride !== undefined && data.prixOverride !== null
? String(data.prixOverride)
: data.prixOverride ?? null,
: (data.prixOverride ?? null),
createdAt: now,
updatedAt: now,
};
@@ -848,7 +851,9 @@ class InMemoryPrismaService {
(link) => link.parentLinkId === where.parentLinkId,
);
}
return links.map((link) => this.buildMachinePieceLink(link, include ?? {}));
return links.map((link) =>
this.buildMachinePieceLink(link, include ?? {}),
);
},
};
@@ -1279,6 +1284,37 @@ class InMemoryPrismaService {
return base;
}
private extractConstructeurIds(input: any): string[] {
if (!input) {
return [];
}
const source = Array.isArray(input.set)
? input.set
: Array.isArray(input.connect)
? input.connect
: [];
return source
.map((entry: any) => (typeof entry?.id === 'string' ? entry.id : null))
.filter((id: string | null): id is string => Boolean(id));
}
private mapConstructeurs(ids: string[] = []) {
if (!Array.isArray(ids) || ids.length === 0) {
return [];
}
return ids
.map((id) =>
this.constructeurs.find((constructeur) => constructeur.id === id),
)
.filter((item): item is (typeof this.constructeurs)[number] =>
Boolean(item),
)
.map((item) => ({ ...item }));
}
private buildMachine(machine: MachineRecord, include: any) {
const base: any = { ...machine };
@@ -1309,8 +1345,8 @@ class InMemoryPrismaService {
}
}
if (include?.constructeur) {
base.constructeur = null;
if (include?.constructeurs) {
base.constructeurs = this.mapConstructeurs(machine.constructeurIds);
}
if (include?.componentLinks) {
@@ -1389,19 +1425,19 @@ class InMemoryPrismaService {
if (include?.typeMachineComponentRequirement) {
const requirement = link.typeMachineComponentRequirementId
? this.typeMachineComponentRequirements.find(
? (this.typeMachineComponentRequirements.find(
(item) => item.id === link.typeMachineComponentRequirementId,
) ?? null
) ?? null)
: null;
base.typeMachineComponentRequirement = requirement
? {
...requirement,
typeComposant:
include.typeMachineComponentRequirement.include?.typeComposant
? this.typeComposants.find(
(item) => item.id === requirement.typeComposantId,
) ?? null
: undefined,
typeComposant: include.typeMachineComponentRequirement.include
?.typeComposant
? (this.typeComposants.find(
(item) => item.id === requirement.typeComposantId,
) ?? null)
: undefined,
}
: null;
}
@@ -1419,14 +1455,12 @@ class InMemoryPrismaService {
return base;
}
private buildMachinePieceLink(
link: MachinePieceLinkRecord,
include: any,
) {
private buildMachinePieceLink(link: MachinePieceLinkRecord, include: any) {
const base: any = { ...link };
if (include?.piece) {
const piece = this.pieces.find((item) => item.id === link.pieceId) ?? null;
const piece =
this.pieces.find((item) => item.id === link.pieceId) ?? null;
base.piece = piece
? this.buildPiece(piece, include.piece.include ?? {})
: null;
@@ -1434,19 +1468,18 @@ class InMemoryPrismaService {
if (include?.typeMachinePieceRequirement) {
const requirement = link.typeMachinePieceRequirementId
? this.typeMachinePieceRequirements.find(
? (this.typeMachinePieceRequirements.find(
(item) => item.id === link.typeMachinePieceRequirementId,
) ?? null
) ?? null)
: null;
base.typeMachinePieceRequirement = requirement
? {
...requirement,
typePiece:
include.typeMachinePieceRequirement.include?.typePiece
? this.typePieces.find(
(item) => item.id === requirement.typePieceId,
) ?? null
: undefined,
typePiece: include.typeMachinePieceRequirement.include?.typePiece
? (this.typePieces.find(
(item) => item.id === requirement.typePieceId,
) ?? null)
: undefined,
}
: null;
}
@@ -1505,8 +1538,8 @@ class InMemoryPrismaService {
);
}
if (include?.constructeur) {
base.constructeur = null;
if (include?.constructeurs) {
base.constructeurs = this.mapConstructeurs(component.constructeurIds);
}
if (include?.pieces) {
@@ -1536,8 +1569,8 @@ class InMemoryPrismaService {
);
}
if (include?.constructeur) {
base.constructeur = null;
if (include?.constructeurs) {
base.constructeurs = this.mapConstructeurs(piece.constructeurIds);
}
if (include?.typeMachinePieceRequirement) {