-- This is the database schema for the 'APC UPS Scan Agent'. CREATE TABLE scan_apc_upses ( scan_apc_ups_uuid uuid not null primary key, scan_apc_ups_ups_uuid uuid not null, scan_apc_ups_serial_number text not null, scan_apc_ups_name text not null, scan_apc_ups_ip text not null, scan_apc_ups_ac_restore_delay numeric not null, scan_apc_ups_shutdown_delay numeric not null, scan_apc_ups_firmware_version text not null, scan_apc_ups_health numeric not null, scan_apc_ups_high_transfer_voltage numeric not null, scan_apc_ups_low_transfer_voltage numeric not null, scan_apc_ups_last_transfer_reason numeric not null, scan_apc_ups_manufactured_date text not null, scan_apc_ups_model text not null, scan_apc_ups_nmc_firmware_version text not null, scan_apc_ups_nmc_serial_number text not null, scan_apc_ups_nmc_mac_address text not null, modified_date timestamp with time zone not null, FOREIGN KEY(scan_apc_ups_ups_uuid) REFERENCES upses(ups_uuid) ); ALTER TABLE scan_apc_upses OWNER TO admin; CREATE TABLE history.scan_apc_upses ( history_id bigserial, scan_apc_ups_uuid uuid, scan_apc_ups_ups_uuid uuid, scan_apc_ups_serial_number text, scan_apc_ups_name text, scan_apc_ups_ip text, scan_apc_ups_ac_restore_delay numeric, scan_apc_ups_shutdown_delay numeric, scan_apc_ups_firmware_version text, scan_apc_ups_health numeric, scan_apc_ups_high_transfer_voltage numeric, scan_apc_ups_low_transfer_voltage numeric, scan_apc_ups_last_transfer_reason numeric, scan_apc_ups_manufactured_date text, scan_apc_ups_model text, scan_apc_ups_nmc_firmware_version text, scan_apc_ups_nmc_serial_number text, scan_apc_ups_nmc_mac_address text, modified_date timestamp with time zone not null ); ALTER TABLE history.scan_apc_upses OWNER TO admin; CREATE FUNCTION history_scan_apc_upses() RETURNS trigger AS $$ DECLARE history_scan_apc_upses RECORD; BEGIN SELECT INTO history_scan_apc_upses * FROM scan_apc_upses WHERE scan_apc_ups_uuid=new.scan_apc_ups_uuid; INSERT INTO history.scan_apc_upses (scan_apc_ups_uuid, scan_apc_ups_ups_uuid, scan_apc_ups_serial_number, scan_apc_ups_name, scan_apc_ups_ip, scan_apc_ups_ac_restore_delay, scan_apc_ups_shutdown_delay, scan_apc_ups_firmware_version, scan_apc_ups_health, scan_apc_ups_high_transfer_voltage, scan_apc_ups_low_transfer_voltage, scan_apc_ups_last_transfer_reason, scan_apc_ups_manufactured_date, scan_apc_ups_model, scan_apc_ups_nmc_firmware_version, scan_apc_ups_nmc_serial_number, scan_apc_ups_nmc_mac_address, modified_date) VALUES (history_scan_apc_upses.scan_apc_ups_uuid, history_scan_apc_upses.scan_apc_ups_ups_uuid, history_scan_apc_upses.scan_apc_ups_serial_number, history_scan_apc_upses.scan_apc_ups_name, history_scan_apc_upses.scan_apc_ups_ip, history_scan_apc_upses.scan_apc_ups_ac_restore_delay, history_scan_apc_upses.scan_apc_ups_shutdown_delay, history_scan_apc_upses.scan_apc_ups_firmware_version, history_scan_apc_upses.scan_apc_ups_health, history_scan_apc_upses.scan_apc_ups_high_transfer_voltage, history_scan_apc_upses.scan_apc_ups_low_transfer_voltage, history_scan_apc_upses.scan_apc_ups_last_transfer_reason, history_scan_apc_upses.scan_apc_ups_manufactured_date, history_scan_apc_upses.scan_apc_ups_model, history_scan_apc_upses.scan_apc_ups_nmc_firmware_version, history_scan_apc_upses.scan_apc_ups_nmc_serial_number, history_scan_apc_upses.scan_apc_ups_nmc_mac_address, history_scan_apc_upses.modified_date); RETURN NULL; END; $$ LANGUAGE plpgsql; ALTER FUNCTION history_scan_apc_upses() OWNER TO admin; CREATE TRIGGER trigger_scan_apc_upses AFTER INSERT OR UPDATE ON scan_apc_upses FOR EACH ROW EXECUTE PROCEDURE history_scan_apc_upses(); -- Battery stuff CREATE TABLE scan_apc_ups_batteries ( scan_apc_ups_battery_uuid uuid not null primary key, scan_apc_ups_battery_scan_apc_ups_uuid uuid not null, scan_apc_ups_battery_number numeric not null, scan_apc_ups_battery_next_replacement_date text not null, scan_apc_ups_battery_health numeric not null, scan_apc_ups_battery_model text not null, scan_apc_ups_battery_percentage_charge numeric not null, scan_apc_ups_battery_last_replacement_date text not null, scan_apc_ups_battery_state numeric not null, scan_apc_ups_battery_temperature numeric not null, scan_apc_ups_battery_alarm_temperature numeric not null, scan_apc_ups_battery_voltage numeric not null, modified_date timestamp with time zone not null, FOREIGN KEY(scan_apc_ups_battery_scan_apc_ups_uuid) REFERENCES scan_apc_upses(scan_apc_ups_uuid) ); ALTER TABLE scan_apc_ups_batteries OWNER TO admin; CREATE TABLE history.scan_apc_ups_batteries ( history_id bigserial, scan_apc_ups_battery_uuid uuid, scan_apc_ups_battery_scan_apc_ups_uuid uuid, scan_apc_ups_battery_number numeric, scan_apc_ups_battery_next_replacement_date text, scan_apc_ups_battery_health numeric, scan_apc_ups_battery_model text, scan_apc_ups_battery_percentage_charge numeric, scan_apc_ups_battery_last_replacement_date text, scan_apc_ups_battery_state numeric, scan_apc_ups_battery_temperature numeric, scan_apc_ups_battery_alarm_temperature numeric, scan_apc_ups_battery_voltage numeric, modified_date timestamp with time zone not null ); ALTER TABLE history.scan_apc_ups_batteries OWNER TO admin; CREATE FUNCTION history_scan_apc_ups_batteries() RETURNS trigger AS $$ DECLARE history_scan_apc_ups_batteries RECORD; BEGIN SELECT INTO history_scan_apc_ups_batteries * FROM scan_apc_ups_batteries WHERE scan_apc_ups_battery_uuid=new.scan_apc_ups_battery_uuid; INSERT INTO history.scan_apc_ups_batteries (scan_apc_ups_battery_uuid, scan_apc_ups_battery_scan_apc_ups_uuid, scan_apc_ups_battery_number, scan_apc_ups_battery_next_replacement_date, scan_apc_ups_battery_health, scan_apc_ups_battery_model, scan_apc_ups_battery_percentage_charge, scan_apc_ups_battery_last_replacement_date, scan_apc_ups_battery_state, scan_apc_ups_battery_temperature, scan_apc_ups_battery_alarm_temperature, scan_apc_ups_battery_voltage, modified_date) VALUES (history_scan_apc_ups_batteries.scan_apc_ups_battery_uuid, history_scan_apc_ups_batteries.scan_apc_ups_battery_scan_apc_ups_uuid, history_scan_apc_ups_batteries.scan_apc_ups_battery_number, history_scan_apc_ups_batteries.scan_apc_ups_battery_next_replacement_date, history_scan_apc_ups_batteries.scan_apc_ups_battery_health, history_scan_apc_ups_batteries.scan_apc_ups_battery_model, history_scan_apc_ups_batteries.scan_apc_ups_battery_percentage_charge, history_scan_apc_ups_batteries.scan_apc_ups_battery_last_replacement_date, history_scan_apc_ups_batteries.scan_apc_ups_battery_state, history_scan_apc_ups_batteries.scan_apc_ups_battery_temperature, history_scan_apc_ups_batteries.scan_apc_ups_battery_alarm_temperature, history_scan_apc_ups_batteries.scan_apc_ups_battery_voltage, history_scan_apc_ups_batteries.modified_date); RETURN NULL; END; $$ LANGUAGE plpgsql; ALTER FUNCTION history_scan_apc_ups_batteries() OWNER TO admin; CREATE TRIGGER trigger_scan_apc_ups_batteries AFTER INSERT OR UPDATE ON scan_apc_ups_batteries FOR EACH ROW EXECUTE PROCEDURE history_scan_apc_ups_batteries(); -- Input power CREATE TABLE scan_apc_ups_input ( scan_apc_ups_input_uuid uuid not null primary key, scan_apc_ups_input_scan_apc_ups_uuid uuid not null, scan_apc_ups_input_frequency numeric not null, scan_apc_ups_input_sensitivity numeric not null, scan_apc_ups_input_voltage numeric not null, scan_apc_ups_input_1m_maximum_input_voltage numeric not null, scan_apc_ups_input_1m_minimum_input_voltage numeric not null, modified_date timestamp with time zone not null, FOREIGN KEY(scan_apc_ups_input_scan_apc_ups_uuid) REFERENCES scan_apc_upses(scan_apc_ups_uuid) ); ALTER TABLE scan_apc_ups_input OWNER TO admin; CREATE TABLE history.scan_apc_ups_input ( history_id bigserial, scan_apc_ups_input_uuid uuid, scan_apc_ups_input_scan_apc_ups_uuid uuid, scan_apc_ups_input_frequency numeric, scan_apc_ups_input_sensitivity numeric, scan_apc_ups_input_voltage numeric, scan_apc_ups_input_1m_maximum_input_voltage numeric, scan_apc_ups_input_1m_minimum_input_voltage numeric, modified_date timestamp with time zone not null ); ALTER TABLE history.scan_apc_ups_input OWNER TO admin; CREATE FUNCTION history_scan_apc_ups_input() RETURNS trigger AS $$ DECLARE history_scan_apc_ups_input RECORD; BEGIN SELECT INTO history_scan_apc_ups_input * FROM scan_apc_ups_input WHERE scan_apc_ups_input_uuid=new.scan_apc_ups_input_uuid; INSERT INTO history.scan_apc_ups_input (scan_apc_ups_input_uuid, scan_apc_ups_input_scan_apc_ups_uuid, scan_apc_ups_input_frequency, scan_apc_ups_input_sensitivity, scan_apc_ups_input_voltage, scan_apc_ups_input_1m_maximum_input_voltage, scan_apc_ups_input_1m_minimum_input_voltage, modified_date) VALUES (history_scan_apc_ups_input.scan_apc_ups_input_uuid, history_scan_apc_ups_input.scan_apc_ups_input_scan_apc_ups_uuid, history_scan_apc_ups_input.scan_apc_ups_input_frequency, history_scan_apc_ups_input.scan_apc_ups_input_sensitivity, history_scan_apc_ups_input.scan_apc_ups_input_voltage, history_scan_apc_ups_input.scan_apc_ups_input_1m_maximum_input_voltage, history_scan_apc_ups_input.scan_apc_ups_input_1m_minimum_input_voltage, history_scan_apc_ups_input.modified_date); RETURN NULL; END; $$ LANGUAGE plpgsql; ALTER FUNCTION history_scan_apc_ups_input() OWNER TO admin; CREATE TRIGGER trigger_scan_apc_ups_input AFTER INSERT OR UPDATE ON scan_apc_ups_input FOR EACH ROW EXECUTE PROCEDURE history_scan_apc_ups_input(); -- Output power CREATE TABLE scan_apc_ups_output ( scan_apc_ups_output_uuid uuid not null primary key, scan_apc_ups_output_scan_apc_ups_uuid uuid not null, scan_apc_ups_output_load_percentage numeric not null, scan_apc_ups_output_time_on_batteries numeric not null, scan_apc_ups_output_estimated_runtime numeric not null, scan_apc_ups_output_frequency numeric not null, scan_apc_ups_output_voltage numeric not null, scan_apc_ups_output_total_output numeric not null, modified_date timestamp with time zone not null, FOREIGN KEY(scan_apc_ups_output_scan_apc_ups_uuid) REFERENCES scan_apc_upses(scan_apc_ups_uuid) ); ALTER TABLE scan_apc_ups_output OWNER TO admin; CREATE TABLE history.scan_apc_ups_output ( history_id bigserial, scan_apc_ups_output_uuid uuid, scan_apc_ups_output_scan_apc_ups_uuid uuid, scan_apc_ups_output_load_percentage numeric, scan_apc_ups_output_time_on_batteries numeric, scan_apc_ups_output_estimated_runtime numeric, scan_apc_ups_output_frequency numeric, scan_apc_ups_output_voltage numeric, scan_apc_ups_output_total_output numeric, modified_date timestamp with time zone not null ); ALTER TABLE history.scan_apc_ups_output OWNER TO admin; CREATE FUNCTION history_scan_apc_ups_output() RETURNS trigger AS $$ DECLARE history_scan_apc_ups_output RECORD; BEGIN SELECT INTO history_scan_apc_ups_output * FROM scan_apc_ups_output WHERE scan_apc_ups_output_uuid=new.scan_apc_ups_output_uuid; INSERT INTO history.scan_apc_ups_output (scan_apc_ups_output_uuid, scan_apc_ups_output_scan_apc_ups_uuid, scan_apc_ups_output_load_percentage, scan_apc_ups_output_time_on_batteries, scan_apc_ups_output_estimated_runtime, scan_apc_ups_output_frequency, scan_apc_ups_output_voltage, scan_apc_ups_output_total_output, modified_date) VALUES (history_scan_apc_ups_output.scan_apc_ups_output_uuid, history_scan_apc_ups_output.scan_apc_ups_output_scan_apc_ups_uuid, history_scan_apc_ups_output.scan_apc_ups_output_load_percentage, history_scan_apc_ups_output.scan_apc_ups_output_time_on_batteries, history_scan_apc_ups_output.scan_apc_ups_output_estimated_runtime, history_scan_apc_ups_output.scan_apc_ups_output_frequency, history_scan_apc_ups_output.scan_apc_ups_output_voltage, history_scan_apc_ups_output.scan_apc_ups_output_total_output, history_scan_apc_ups_output.modified_date); RETURN NULL; END; $$ LANGUAGE plpgsql; ALTER FUNCTION history_scan_apc_ups_output() OWNER TO admin; CREATE TRIGGER trigger_scan_apc_ups_output AFTER INSERT OR UPDATE ON scan_apc_ups_output FOR EACH ROW EXECUTE PROCEDURE history_scan_apc_ups_output();