fix: corrige les associations constructeurs
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
-- Convert single constructeur relation to many-to-many for machines, composants et pièces
|
||||
|
||||
-- Machines → Constructeurs
|
||||
ALTER TABLE "machines" DROP CONSTRAINT IF EXISTS "machines_constructeurId_fkey";
|
||||
|
||||
CREATE TABLE "_MachineConstructeurs" (
|
||||
"A" TEXT NOT NULL,
|
||||
"B" TEXT NOT NULL,
|
||||
CONSTRAINT "_MachineConstructeurs_A_fkey" FOREIGN KEY ("A") REFERENCES "machines"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "_MachineConstructeurs_B_fkey" FOREIGN KEY ("B") REFERENCES "constructeurs"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "_MachineConstructeurs_AB_unique" ON "_MachineConstructeurs"("A", "B");
|
||||
CREATE INDEX "_MachineConstructeurs_B_index" ON "_MachineConstructeurs"("B");
|
||||
|
||||
INSERT INTO "_MachineConstructeurs" ("A", "B")
|
||||
SELECT "id", "constructeurId"
|
||||
FROM "machines"
|
||||
WHERE "constructeurId" IS NOT NULL
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
ALTER TABLE "machines" DROP COLUMN IF EXISTS "constructeurId";
|
||||
|
||||
-- Composants → Constructeurs
|
||||
ALTER TABLE "composants" DROP CONSTRAINT IF EXISTS "composants_constructeurId_fkey";
|
||||
|
||||
CREATE TABLE "_ComposantConstructeurs" (
|
||||
"A" TEXT NOT NULL,
|
||||
"B" TEXT NOT NULL,
|
||||
CONSTRAINT "_ComposantConstructeurs_A_fkey" FOREIGN KEY ("A") REFERENCES "composants"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "_ComposantConstructeurs_B_fkey" FOREIGN KEY ("B") REFERENCES "constructeurs"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "_ComposantConstructeurs_AB_unique" ON "_ComposantConstructeurs"("A", "B");
|
||||
CREATE INDEX "_ComposantConstructeurs_B_index" ON "_ComposantConstructeurs"("B");
|
||||
|
||||
INSERT INTO "_ComposantConstructeurs" ("A", "B")
|
||||
SELECT "id", "constructeurId"
|
||||
FROM "composants"
|
||||
WHERE "constructeurId" IS NOT NULL
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
ALTER TABLE "composants" DROP COLUMN IF EXISTS "constructeurId";
|
||||
|
||||
-- Pièces → Constructeurs
|
||||
ALTER TABLE "pieces" DROP CONSTRAINT IF EXISTS "pieces_constructeurId_fkey";
|
||||
|
||||
CREATE TABLE "_PieceConstructeurs" (
|
||||
"A" TEXT NOT NULL,
|
||||
"B" TEXT NOT NULL,
|
||||
CONSTRAINT "_PieceConstructeurs_A_fkey" FOREIGN KEY ("A") REFERENCES "pieces"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "_PieceConstructeurs_B_fkey" FOREIGN KEY ("B") REFERENCES "constructeurs"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "_PieceConstructeurs_AB_unique" ON "_PieceConstructeurs"("A", "B");
|
||||
CREATE INDEX "_PieceConstructeurs_B_index" ON "_PieceConstructeurs"("B");
|
||||
|
||||
INSERT INTO "_PieceConstructeurs" ("A", "B")
|
||||
SELECT "id", "constructeurId"
|
||||
FROM "pieces"
|
||||
WHERE "constructeurId" IS NOT NULL
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
ALTER TABLE "pieces" DROP COLUMN IF EXISTS "constructeurId";
|
||||
@@ -0,0 +1,66 @@
|
||||
-- Fix the orientation of implicit many-to-many join tables between constructeurs
|
||||
-- and machines/composants/pièces so that Prisma inserts target IDs into the
|
||||
-- matching foreign key columns.
|
||||
|
||||
-- Machines ↔ Constructeurs
|
||||
CREATE TABLE "_MachineConstructeurs_new" (
|
||||
"A" TEXT NOT NULL,
|
||||
"B" TEXT NOT NULL,
|
||||
CONSTRAINT "_MachineConstructeurs_new_A_fkey" FOREIGN KEY ("A") REFERENCES "constructeurs"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "_MachineConstructeurs_new_B_fkey" FOREIGN KEY ("B") REFERENCES "machines"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
INSERT INTO "_MachineConstructeurs_new" ("A", "B")
|
||||
SELECT "B", "A"
|
||||
FROM "_MachineConstructeurs";
|
||||
|
||||
DROP TABLE "_MachineConstructeurs";
|
||||
|
||||
ALTER TABLE "_MachineConstructeurs_new" RENAME TO "_MachineConstructeurs";
|
||||
ALTER TABLE "_MachineConstructeurs" RENAME CONSTRAINT "_MachineConstructeurs_new_A_fkey" TO "_MachineConstructeurs_A_fkey";
|
||||
ALTER TABLE "_MachineConstructeurs" RENAME CONSTRAINT "_MachineConstructeurs_new_B_fkey" TO "_MachineConstructeurs_B_fkey";
|
||||
|
||||
CREATE UNIQUE INDEX "_MachineConstructeurs_AB_unique" ON "_MachineConstructeurs"("A", "B");
|
||||
CREATE INDEX "_MachineConstructeurs_B_index" ON "_MachineConstructeurs"("B");
|
||||
|
||||
-- Composants ↔ Constructeurs
|
||||
CREATE TABLE "_ComposantConstructeurs_new" (
|
||||
"A" TEXT NOT NULL,
|
||||
"B" TEXT NOT NULL,
|
||||
CONSTRAINT "_ComposantConstructeurs_new_A_fkey" FOREIGN KEY ("A") REFERENCES "constructeurs"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "_ComposantConstructeurs_new_B_fkey" FOREIGN KEY ("B") REFERENCES "composants"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
INSERT INTO "_ComposantConstructeurs_new" ("A", "B")
|
||||
SELECT "B", "A"
|
||||
FROM "_ComposantConstructeurs";
|
||||
|
||||
DROP TABLE "_ComposantConstructeurs";
|
||||
|
||||
ALTER TABLE "_ComposantConstructeurs_new" RENAME TO "_ComposantConstructeurs";
|
||||
ALTER TABLE "_ComposantConstructeurs" RENAME CONSTRAINT "_ComposantConstructeurs_new_A_fkey" TO "_ComposantConstructeurs_A_fkey";
|
||||
ALTER TABLE "_ComposantConstructeurs" RENAME CONSTRAINT "_ComposantConstructeurs_new_B_fkey" TO "_ComposantConstructeurs_B_fkey";
|
||||
|
||||
CREATE UNIQUE INDEX "_ComposantConstructeurs_AB_unique" ON "_ComposantConstructeurs"("A", "B");
|
||||
CREATE INDEX "_ComposantConstructeurs_B_index" ON "_ComposantConstructeurs"("B");
|
||||
|
||||
-- Pièces ↔ Constructeurs
|
||||
CREATE TABLE "_PieceConstructeurs_new" (
|
||||
"A" TEXT NOT NULL,
|
||||
"B" TEXT NOT NULL,
|
||||
CONSTRAINT "_PieceConstructeurs_new_A_fkey" FOREIGN KEY ("A") REFERENCES "constructeurs"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "_PieceConstructeurs_new_B_fkey" FOREIGN KEY ("B") REFERENCES "pieces"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
INSERT INTO "_PieceConstructeurs_new" ("A", "B")
|
||||
SELECT "B", "A"
|
||||
FROM "_PieceConstructeurs";
|
||||
|
||||
DROP TABLE "_PieceConstructeurs";
|
||||
|
||||
ALTER TABLE "_PieceConstructeurs_new" RENAME TO "_PieceConstructeurs";
|
||||
ALTER TABLE "_PieceConstructeurs" RENAME CONSTRAINT "_PieceConstructeurs_new_A_fkey" TO "_PieceConstructeurs_A_fkey";
|
||||
ALTER TABLE "_PieceConstructeurs" RENAME CONSTRAINT "_PieceConstructeurs_new_B_fkey" TO "_PieceConstructeurs_B_fkey";
|
||||
|
||||
CREATE UNIQUE INDEX "_PieceConstructeurs_AB_unique" ON "_PieceConstructeurs"("A", "B");
|
||||
CREATE INDEX "_PieceConstructeurs_B_index" ON "_PieceConstructeurs"("B");
|
||||
@@ -0,0 +1,45 @@
|
||||
-- Restore the original orientation of the machine/composant ↔ constructeur
|
||||
-- implicit join tables after the previous corrective migration, while keeping
|
||||
-- the pièce ↔ constructeur table aligned with Prisma's expectations.
|
||||
|
||||
-- Machines ↔ Constructeurs must map column A → machine, B → constructeur
|
||||
CREATE TABLE "_MachineConstructeurs_restored" (
|
||||
"A" TEXT NOT NULL,
|
||||
"B" TEXT NOT NULL,
|
||||
CONSTRAINT "_MachineConstructeurs_restored_A_fkey" FOREIGN KEY ("A") REFERENCES "machines"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "_MachineConstructeurs_restored_B_fkey" FOREIGN KEY ("B") REFERENCES "constructeurs"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
INSERT INTO "_MachineConstructeurs_restored" ("A", "B")
|
||||
SELECT "B", "A"
|
||||
FROM "_MachineConstructeurs";
|
||||
|
||||
DROP TABLE "_MachineConstructeurs";
|
||||
|
||||
ALTER TABLE "_MachineConstructeurs_restored" RENAME TO "_MachineConstructeurs";
|
||||
ALTER TABLE "_MachineConstructeurs" RENAME CONSTRAINT "_MachineConstructeurs_restored_A_fkey" TO "_MachineConstructeurs_A_fkey";
|
||||
ALTER TABLE "_MachineConstructeurs" RENAME CONSTRAINT "_MachineConstructeurs_restored_B_fkey" TO "_MachineConstructeurs_B_fkey";
|
||||
|
||||
CREATE UNIQUE INDEX "_MachineConstructeurs_AB_unique" ON "_MachineConstructeurs"("A", "B");
|
||||
CREATE INDEX "_MachineConstructeurs_B_index" ON "_MachineConstructeurs"("B");
|
||||
|
||||
-- Composants ↔ Constructeurs must map column A → composant, B → constructeur
|
||||
CREATE TABLE "_ComposantConstructeurs_restored" (
|
||||
"A" TEXT NOT NULL,
|
||||
"B" TEXT NOT NULL,
|
||||
CONSTRAINT "_ComposantConstructeurs_restored_A_fkey" FOREIGN KEY ("A") REFERENCES "composants"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "_ComposantConstructeurs_restored_B_fkey" FOREIGN KEY ("B") REFERENCES "constructeurs"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
INSERT INTO "_ComposantConstructeurs_restored" ("A", "B")
|
||||
SELECT "B", "A"
|
||||
FROM "_ComposantConstructeurs";
|
||||
|
||||
DROP TABLE "_ComposantConstructeurs";
|
||||
|
||||
ALTER TABLE "_ComposantConstructeurs_restored" RENAME TO "_ComposantConstructeurs";
|
||||
ALTER TABLE "_ComposantConstructeurs" RENAME CONSTRAINT "_ComposantConstructeurs_restored_A_fkey" TO "_ComposantConstructeurs_A_fkey";
|
||||
ALTER TABLE "_ComposantConstructeurs" RENAME CONSTRAINT "_ComposantConstructeurs_restored_B_fkey" TO "_ComposantConstructeurs_B_fkey";
|
||||
|
||||
CREATE UNIQUE INDEX "_ComposantConstructeurs_AB_unique" ON "_ComposantConstructeurs"("A", "B");
|
||||
CREATE INDEX "_ComposantConstructeurs_B_index" ON "_ComposantConstructeurs"("B");
|
||||
Reference in New Issue
Block a user