/*
  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;
