151 lines
5.5 KiB
SQL
151 lines
5.5 KiB
SQL
CREATE TABLE `circuit_list_equipment_identifiers` (
|
|
`owner_type` text NOT NULL,
|
|
`owner_id` text NOT NULL,
|
|
`circuit_list_id` text NOT NULL,
|
|
`equipment_identifier` text NOT NULL,
|
|
FOREIGN KEY (`circuit_list_id`) REFERENCES `circuit_lists`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `circuit_list_equipment_identifiers_owner_unique` ON `circuit_list_equipment_identifiers` (`owner_type`,`owner_id`);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `circuit_list_equipment_identifiers_list_identifier_unique` ON `circuit_list_equipment_identifiers` (`circuit_list_id`,`equipment_identifier`);--> statement-breakpoint
|
|
CREATE TABLE `circuit_protection_devices` (
|
|
`circuit_id` text PRIMARY KEY NOT NULL,
|
|
`type` text NOT NULL,
|
|
`rated_current_a` real NOT NULL,
|
|
`fuse_utilization_category` text,
|
|
`trip_characteristic` text,
|
|
`rcd_type` text,
|
|
`rated_residual_current_ma` real,
|
|
FOREIGN KEY (`circuit_id`) REFERENCES `circuits`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `distribution_board_component_protection_devices` (
|
|
`component_id` text PRIMARY KEY NOT NULL,
|
|
`type` text NOT NULL,
|
|
`rated_current_a` real NOT NULL,
|
|
`fuse_utilization_category` text,
|
|
`trip_characteristic` text,
|
|
`rcd_type` text,
|
|
`rated_residual_current_ma` real,
|
|
FOREIGN KEY (`component_id`) REFERENCES `distribution_board_components`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE TABLE `distribution_board_components` (
|
|
`id` text PRIMARY KEY NOT NULL,
|
|
`circuit_list_id` text NOT NULL,
|
|
`section_id` text,
|
|
`equipment_identifier` text NOT NULL,
|
|
`name` text NOT NULL,
|
|
`role` text NOT NULL,
|
|
`placement` text NOT NULL,
|
|
`sort_order` integer DEFAULT 0 NOT NULL,
|
|
FOREIGN KEY (`circuit_list_id`) REFERENCES `circuit_lists`(`id`) ON UPDATE no action ON DELETE cascade,
|
|
FOREIGN KEY (`section_id`) REFERENCES `circuit_sections`(`id`) ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `distribution_board_components_list_identifier_unique` ON `distribution_board_components` (`circuit_list_id`,`equipment_identifier`);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `distribution_board_components_section_role_unique` ON `distribution_board_components` (`section_id`,`role`);--> statement-breakpoint
|
|
ALTER TABLE `circuit_sections` ADD `category` text;--> statement-breakpoint
|
|
ALTER TABLE `circuit_sections` ADD `group_number` integer;--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `circuit_sections_list_category_group_unique` ON `circuit_sections` (`circuit_list_id`,`category`,`group_number`);--> statement-breakpoint
|
|
UPDATE `circuit_sections`
|
|
SET
|
|
`category` = CASE `key`
|
|
WHEN 'lighting' THEN 'lighting'
|
|
WHEN 'single_phase' THEN 'single_phase'
|
|
WHEN 'three_phase' THEN 'three_phase'
|
|
END,
|
|
`group_number` = 1
|
|
WHERE `key` IN ('lighting', 'single_phase', 'three_phase');--> statement-breakpoint
|
|
INSERT INTO `circuit_list_equipment_identifiers` (
|
|
`owner_type`,
|
|
`owner_id`,
|
|
`circuit_list_id`,
|
|
`equipment_identifier`
|
|
)
|
|
SELECT
|
|
'circuit',
|
|
`id`,
|
|
`circuit_list_id`,
|
|
`equipment_identifier`
|
|
FROM `circuits`;--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `circuit_list_equipment_identifiers_normalized_unique`
|
|
ON `circuit_list_equipment_identifiers` (
|
|
`circuit_list_id`,
|
|
lower(trim(`equipment_identifier`))
|
|
);--> statement-breakpoint
|
|
CREATE UNIQUE INDEX `distribution_board_components_fixed_role_unique`
|
|
ON `distribution_board_components` (`circuit_list_id`, `role`)
|
|
WHERE `role` IN ('main_switch', 'surge_protective_device');--> statement-breakpoint
|
|
CREATE TRIGGER `circuits_equipment_identifier_insert`
|
|
AFTER INSERT ON `circuits`
|
|
BEGIN
|
|
INSERT INTO `circuit_list_equipment_identifiers` (
|
|
`owner_type`,
|
|
`owner_id`,
|
|
`circuit_list_id`,
|
|
`equipment_identifier`
|
|
)
|
|
VALUES (
|
|
'circuit',
|
|
NEW.`id`,
|
|
NEW.`circuit_list_id`,
|
|
NEW.`equipment_identifier`
|
|
);
|
|
END;--> statement-breakpoint
|
|
CREATE TRIGGER `circuits_equipment_identifier_update`
|
|
AFTER UPDATE OF `circuit_list_id`, `equipment_identifier` ON `circuits`
|
|
BEGIN
|
|
UPDATE `circuit_list_equipment_identifiers`
|
|
SET
|
|
`circuit_list_id` = NEW.`circuit_list_id`,
|
|
`equipment_identifier` = NEW.`equipment_identifier`
|
|
WHERE
|
|
`owner_type` = 'circuit'
|
|
AND `owner_id` = OLD.`id`;
|
|
END;--> statement-breakpoint
|
|
CREATE TRIGGER `circuits_equipment_identifier_delete`
|
|
AFTER DELETE ON `circuits`
|
|
BEGIN
|
|
DELETE FROM `circuit_list_equipment_identifiers`
|
|
WHERE
|
|
`owner_type` = 'circuit'
|
|
AND `owner_id` = OLD.`id`;
|
|
END;--> statement-breakpoint
|
|
CREATE TRIGGER `distribution_board_components_equipment_identifier_insert`
|
|
AFTER INSERT ON `distribution_board_components`
|
|
BEGIN
|
|
INSERT INTO `circuit_list_equipment_identifiers` (
|
|
`owner_type`,
|
|
`owner_id`,
|
|
`circuit_list_id`,
|
|
`equipment_identifier`
|
|
)
|
|
VALUES (
|
|
'distribution_board_component',
|
|
NEW.`id`,
|
|
NEW.`circuit_list_id`,
|
|
NEW.`equipment_identifier`
|
|
);
|
|
END;--> statement-breakpoint
|
|
CREATE TRIGGER `distribution_board_components_equipment_identifier_update`
|
|
AFTER UPDATE OF `circuit_list_id`, `equipment_identifier`
|
|
ON `distribution_board_components`
|
|
BEGIN
|
|
UPDATE `circuit_list_equipment_identifiers`
|
|
SET
|
|
`circuit_list_id` = NEW.`circuit_list_id`,
|
|
`equipment_identifier` = NEW.`equipment_identifier`
|
|
WHERE
|
|
`owner_type` = 'distribution_board_component'
|
|
AND `owner_id` = OLD.`id`;
|
|
END;--> statement-breakpoint
|
|
CREATE TRIGGER `distribution_board_components_equipment_identifier_delete`
|
|
AFTER DELETE ON `distribution_board_components`
|
|
BEGIN
|
|
DELETE FROM `circuit_list_equipment_identifiers`
|
|
WHERE
|
|
`owner_type` = 'distribution_board_component'
|
|
AND `owner_id` = OLD.`id`;
|
|
END;
|