-- Remove constraints to table measured_values
ALTER TABLE humidities
DROP CONSTRAINT fk_humidites_measured_value_id;

ALTER TABLE pressures
DROP CONSTRAINT fk_pressures_measured_value_id;

ALTER TABLE temperatures
DROP CONSTRAINT fk_temperatures_measured_value_id;

-- Rename measured_value_id to sensor_id
ALTER TABLE humidities
RENAME COLUMN measured_value_id TO sensor_id;

ALTER TABLE pressures
RENAME COLUMN measured_value_id TO sensor_id;

ALTER TABLE temperatures
RENAME COLUMN measured_value_id TO sensor_id;

-- Add new column measures_value_id with data from sensor_id
ALTER TABLE humidities
ADD COLUMN measured_value_id CHAR(36);

UPDATE humidities
SET measured_value_id=sensor_id;

ALTER TABLE pressures
ADD COLUMN measured_value_id CHAR(36);

UPDATE pressures
SET measured_value_id=sensor_id;

ALTER TABLE temperatures
ADD COLUMN measured_value_id CHAR(36);

UPDATE temperatures
SET measured_value_id=sensor_id;

-- Update sensor_id's
UPDATE humidities h
SET sensor_id = (
  SELECT m.sensor_id
  FROM measured_values m
  WHERE m.id = h.measured_value_id
);

UPDATE pressures p
SET sensor_id = (
  SELECT m.sensor_id
  FROM measured_values m
  WHERE m.id = p.measured_value_id
);

UPDATE temperatures t
SET sensor_id = (
  SELECT m.sensor_id
  FROM measured_values m
  WHERE m.id = t.measured_value_id
);

-- Delete sensor_id columns
ALTER TABLE humidities
DROP COLUMN measured_value_id;

ALTER TABLE pressures
DROP COLUMN measured_value_id;

ALTER TABLE temperatures
DROP COLUMN measured_value_id;

-- Add foreign keys
ALTER TABLE humidities
ADD CONSTRAINT fk_humidites_sensor_id
FOREIGN KEY (sensor_id)
REFERENCES sensors(sensor_id)
ON DELETE CASCADE
ON UPDATE CASCADE;

ALTER TABLE pressures
ADD CONSTRAINT fk_pressures_sensor_id
FOREIGN KEY (sensor_id)
REFERENCES sensors(sensor_id)
ON DELETE CASCADE
ON UPDATE CASCADE;

ALTER TABLE temperatures
ADD CONSTRAINT fk_temperatures_sensor_id
FOREIGN KEY (sensor_id)
REFERENCES sensors(sensor_id)
ON DELETE CASCADE
ON UPDATE CASCADE;

-- drop measured values table
DROP TABLE measured_values CASCADE;
