Fixed migrations

This commit is contained in:
Vins 2024-05-27 16:48:06 +02:00
parent 151538e971
commit 3289482e62
4 changed files with 119 additions and 49 deletions

View File

@ -0,0 +1,114 @@
/*
Warnings:
- Added the required column `office_uid` to the `customers` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
-- ALTER TABLE "customers" ADD COLUMN "office_uid" VARCHAR(255) NOT NULL;
-- Set the office_uid for existing rows based on the office with "idNot" = '0000'
-- UPDATE customers
-- SET office_uid = (
-- SELECT uid
-- FROM offices
-- WHERE "idNot" = '0000'
-- );
-- -- Create a temporary table to store the mapping
-- CREATE TEMPORARY TABLE customer_office_update AS
-- SELECT c.uid AS customer_uid, of.office_uid
-- FROM customers c
-- JOIN "_OfficeFolderHasCustomers" ofhc ON c.uid = ofhc."A"
-- JOIN office_folders of ON ofhc."B" = of.uid;
-- -- Update customers with the corresponding office_uid
-- UPDATE customers
-- SET office_uid = (
-- SELECT office_uid
-- FROM customer_office_update
-- WHERE customer_office_update.customer_uid = customers.uid
-- );
-- -- Drop the temporary table
-- DROP TABLE customer_office_update;
-- -- Add the foreign key constraint
-- ALTER TABLE customers
-- ADD CONSTRAINT fk_customers_office
-- FOREIGN KEY (office_uid) REFERENCES offices(uid)
-- ON DELETE CASCADE;
-- -- AddForeignKey
-- ALTER TABLE "customers" ADD CONSTRAINT "customers_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE;
/*
Warnings:
- Added the required column `office_uid` to the `customers` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
-- ALTER TABLE "customers" ADD COLUMN "office_uid" VARCHAR(255) NOT NULL;
-- -- AddForeignKey
-- ALTER TABLE "customers" ADD CONSTRAINT "customers_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE;
-- -- Create a temporary table to store the mapping
-- CREATE TEMPORARY TABLE customer_office_update AS
-- SELECT c.uid AS customer_uid, of.office_uid
-- FROM customers c
-- JOIN "_OfficeFolderHasCustomers" ofhc ON c.uid = ofhc."A"
-- JOIN office_folders of ON ofhc."B" = of.uid;
-- -- Update customers with the corresponding office_uid
-- UPDATE customers
-- SET office_uid = (
-- SELECT office_uid
-- FROM customer_office_update
-- WHERE customer_office_update.customer_uid = customers.uid
-- );
-- -- Drop the temporary table
-- DROP TABLE customer_office_update;
-- Add the office_uid column
ALTER TABLE customers
ADD COLUMN office_uid VARCHAR(255);
-- Set the office_uid for existing rows
UPDATE customers
SET office_uid = (
SELECT uid
FROM offices
WHERE "idNot" = '0000'
);
-- Create a temporary table to store the mapping
CREATE TEMPORARY TABLE customer_office_update AS
SELECT c.uid AS customer_uid, of.office_uid
FROM customers c
JOIN "_OfficeFolderHasCustomers" ofhc ON c.uid = ofhc."A"
JOIN office_folders of ON ofhc."B" = of.uid;
-- Update customers with the corresponding office_uid
UPDATE customers
SET office_uid = (
SELECT office_uid
FROM customer_office_update
WHERE customer_office_update.customer_uid = customers.uid
);
-- Drop the temporary table
DROP TABLE customer_office_update;
-- Alter the column to be NOT NULL
ALTER TABLE customers
ALTER COLUMN office_uid SET NOT NULL;
-- Add the foreign key constraint
ALTER TABLE customers
ADD CONSTRAINT customers_office_uid_fkey
FOREIGN KEY (office_uid) REFERENCES offices(uid)
ON DELETE CASCADE;

View File

@ -1,47 +0,0 @@
/*
Warnings:
- Added the required column `office_uid` to the `customers` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "customers" ADD COLUMN "office_uid" VARCHAR(255) NOT NULL;
-- Set the office_uid for existing rows based on the office with "idNot" = '0000'
UPDATE customers
SET office_uid = (
SELECT uid
FROM offices
WHERE "idNot" = '0000'
);
-- Alter the column to be NOT NULL
ALTER TABLE customers
ALTER COLUMN office_uid SET NOT NULL;
-- Create a temporary table to store the mapping
CREATE TEMPORARY TABLE customer_office_update AS
SELECT c.uid AS customer_uid, of.office_uid
FROM customers c
JOIN "_OfficeFolderHasCustomers" ofhc ON c.uid = ofhc."A"
JOIN office_folders of ON ofhc."B" = of.uid;
-- Update customers with the corresponding office_uid
UPDATE customers
SET office_uid = (
SELECT office_uid
FROM customer_office_update
WHERE customer_office_update.customer_uid = customers.uid
);
-- Drop the temporary table
DROP TABLE customer_office_update;
-- Add the foreign key constraint
ALTER TABLE customers
ADD CONSTRAINT fk_customers_office
FOREIGN KEY (office_uid) REFERENCES offices(uid)
ON DELETE CASCADE;
-- AddForeignKey
ALTER TABLE "customers" ADD CONSTRAINT "customers_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -1,2 +0,0 @@
-- DropForeignKey
ALTER TABLE "customers" DROP CONSTRAINT "fk_customers_office";

View File

@ -0,0 +1,5 @@
-- DropForeignKey
ALTER TABLE "customers" DROP CONSTRAINT "customers_office_uid_fkey";
-- AddForeignKey
ALTER TABLE "customers" ADD CONSTRAINT "customers_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE;