Skip to content

Commit

Permalink
Merge pull request #87 from helyOSFramework/refactoring/database_proc…
Browse files Browse the repository at this point in the history
…edure

Refactoring/database functions and procedures
  • Loading branch information
cviolbarbosa authored Jan 17, 2025
2 parents b590d8d + bc76ecf commit d566fae
Show file tree
Hide file tree
Showing 9 changed files with 26 additions and 25 deletions.
2 changes: 1 addition & 1 deletion helyos_database/db_schema/0003_map_objects_table.sql
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ $$ LANGUAGE plpgsql;
CREATE TRIGGER set_timestamp
BEFORE UPDATE ON map_objects
FOR EACH ROW
EXECUTE PROCEDURE trigger_set_timestamp();
EXECUTE FUNCTION trigger_set_timestamp();

COMMENT ON COLUMN map_objects.type IS '@description map_object type: "crop", "road", "drivable", "guide-line", "obstacle"';
COMMENT ON COLUMN map_objects.name IS '@description map_object name: "strawbery field - 02", "Load Gate A", etc.';
Expand Down
2 changes: 1 addition & 1 deletion helyos_database/db_schema/0005_mission_queue_table.sql
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ LANGUAGE plpgsql;
CREATE TRIGGER set_timestamp_mission_queue
BEFORE UPDATE ON public.mission_queue
FOR EACH ROW
EXECUTE PROCEDURE public.trigger_set_timestamp_mission_queue();
EXECUTE FUNCTION public.trigger_set_timestamp_mission_queue();
2 changes: 1 addition & 1 deletion helyos_database/db_schema/0006_work_processes_tables.sql
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ LANGUAGE plpgsql;
CREATE TRIGGER set_timestamp_work_processes
BEFORE UPDATE ON public.work_processes
FOR EACH ROW
EXECUTE PROCEDURE public.trigger_set_timestamp_work_processes();
EXECUTE FUNCTION public.trigger_set_timestamp_work_processes();

-- Breakdown work process in many services
-- Name: work_processe_type; Type: TABLE; Schema: public; Owner: -
Expand Down
21 changes: 11 additions & 10 deletions helyos_database/db_stored_procedures/0021_agent_functions.sql
Original file line number Diff line number Diff line change
Expand Up @@ -101,27 +101,28 @@ COST 100
SECURITY DEFINER;
ALTER FUNCTION public.notify_change_tool() OWNER TO role_admin;

DROP FUNCTION public.notify_new_rabbitmq_account(
agent_id INT,
username TEXT,
password TEXT
);


CREATE OR REPLACE FUNCTION public.notify_new_rabbitmq_account(
CREATE OR REPLACE PROCEDURE public.notify_new_rabbitmq_account(
agent_id INT,
username TEXT,
password TEXT
) RETURNS VOID AS
) AS
$BODY$
BEGIN
PERFORM pg_notify('new_rabbitmq_account', (json_build_object('agent_id', agent_id))::TEXT);

INSERT INTO public.events_queue (event_name, payload)
VALUES ('new_rabbitmq_account', json_build_object('username', username, 'password', password, 'agent_id', agent_id)::TEXT);

RETURN;
END;
$BODY$
LANGUAGE plpgsql;



-- Function that notifies the deletion of a tool
CREATE OR REPLACE FUNCTION public.notify_deleted_tool()
RETURNS TRIGGER AS
Expand Down Expand Up @@ -171,7 +172,7 @@ BEGIN
RAISE EXCEPTION SQLSTATE '90004' USING MESSAGE = 'agent id not found';
END IF;

PERFORM public.notify_new_rabbitmq_account(agent_id, username, password);
CALL public.notify_new_rabbitmq_account(agent_id, username, password);

RETURN 0;
END
Expand All @@ -194,7 +195,7 @@ WHEN ( (OLD.status IS DISTINCT FROM NEW.status) OR ( NEW.status = 'busy'
OLD.z IS DISTINCT FROM NEW.z OR
OLD.assignment IS DISTINCT FROM NEW.assignment
)))
EXECUTE PROCEDURE public.create_row_tool_sensors_history();
EXECUTE FUNCTION public.create_row_tool_sensors_history();



Expand All @@ -214,7 +215,7 @@ WHEN (OLD.status IS DISTINCT FROM NEW.status OR OLD.connection_status IS DISTINC
OLD.write_permissions IS DISTINCT FROM NEW.write_permissions OR
OLD.configure_permissions IS DISTINCT FROM NEW.configure_permissions
)
EXECUTE PROCEDURE public.notify_change_tool();
EXECUTE FUNCTION public.notify_change_tool();



Expand All @@ -224,7 +225,7 @@ CREATE TRIGGER delete_tool_trigger
AFTER DELETE
ON public.agents
FOR EACH ROW
EXECUTE PROCEDURE public.notify_deleted_tool();
EXECUTE FUNCTION public.notify_deleted_tool();

GRANT EXECUTE ON FUNCTION public.create_row_tool_sensors_history() TO role_admin, role_application, role_postgraphile;
GRANT EXECUTE ON FUNCTION public.register_rabbitmq_account(agent_id INT,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,12 @@ CREATE TRIGGER notify_assignments_insertion
AFTER INSERT
ON public.assignments
FOR EACH ROW
EXECUTE PROCEDURE public.notify_assignments_insertion();
EXECUTE FUNCTION public.notify_assignments_insertion();

DROP TRIGGER IF EXISTS notify_assignments_updates ON public.assignments;
CREATE TRIGGER notify_assignments_updates
AFTER UPDATE
ON public.assignments
FOR EACH ROW
WHEN (OLD.status IS DISTINCT FROM NEW.status)
EXECUTE PROCEDURE public.notify_assignments_updates();
EXECUTE FUNCTION public.notify_assignments_updates();
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ DROP TRIGGER IF EXISTS trigger_new_instant_action_trigger ON public.instant_acti
CREATE TRIGGER trigger_new_instant_action_trigger
AFTER INSERT ON public.instant_actions
FOR EACH ROW
EXECUTE PROCEDURE public.notify_instant_actions_insertion();
EXECUTE FUNCTION public.notify_instant_actions_insertion();
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,12 @@ CREATE TRIGGER notify_mission_queue_update
AFTER UPDATE
ON public.mission_queue
FOR EACH ROW
EXECUTE PROCEDURE public.notify_mission_queue_update();
EXECUTE FUNCTION public.notify_mission_queue_update();


DROP TRIGGER IF EXISTS trigger_mission_queue_insertion ON public.mission_queue;
CREATE TRIGGER trigger_mission_queue_insertion
AFTER INSERT
ON public.mission_queue
FOR EACH ROW
EXECUTE PROCEDURE public.notify_mission_queue_insertion();
EXECUTE FUNCTION public.notify_mission_queue_insertion();
Original file line number Diff line number Diff line change
Expand Up @@ -93,18 +93,18 @@ AFTER UPDATE
ON public.service_requests
FOR EACH ROW
WHEN (OLD.response IS DISTINCT FROM NEW.response AND NEW.next_request_to_dispatch_uid IS NOT NULL AND NEW.status = 'SUCCESS')
EXECUTE PROCEDURE public.send_next_service('READY_TO_BE_SENT');
EXECUTE FUNCTION public.send_next_service('READY_TO_BE_SENT');

DROP TRIGGER IF EXISTS notify_service_requests_insertion ON public.service_requests;
CREATE TRIGGER notify_service_requests_insertion
AFTER INSERT
ON public.service_requests
FOR EACH ROW
EXECUTE PROCEDURE public.notify_service_requests_insertion();
EXECUTE FUNCTION public.notify_service_requests_insertion();

DROP TRIGGER IF EXISTS notify_service_requests_updates ON public.service_requests;
CREATE TRIGGER notify_service_requests_updates
AFTER UPDATE
ON public.service_requests
FOR EACH ROW
EXECUTE PROCEDURE public.notify_service_requests_updates();
EXECUTE FUNCTION public.notify_service_requests_updates();
Original file line number Diff line number Diff line change
Expand Up @@ -123,15 +123,15 @@ BEFORE UPDATE
ON public.work_processes
FOR EACH ROW
WHEN (OLD.status = 'executing' OR OLD.status = 'calculating')
EXECUTE PROCEDURE public.prevent_mission_running_update();
EXECUTE FUNCTION public.prevent_mission_running_update();


DROP TRIGGER IF EXISTS notify_work_processes_update ON public.work_processes;
CREATE TRIGGER notify_work_processes_update
AFTER UPDATE
ON public.work_processes
FOR EACH ROW
EXECUTE PROCEDURE public.notify_work_processes_update();
EXECUTE FUNCTION public.notify_work_processes_update();


DROP TRIGGER IF EXISTS trigger_work_processes_before_insertion ON public.work_processes;
Expand All @@ -140,15 +140,15 @@ BEFORE INSERT
ON public.work_processes
FOR EACH ROW
WHEN (NEW.run_order IS NULL)
EXECUTE PROCEDURE public.update_work_process_list_order();
EXECUTE FUNCTION public.update_work_process_list_order();


DROP TRIGGER IF EXISTS trigger_work_processes_insertion ON public.work_processes;
CREATE TRIGGER trigger_work_processes_insertion
AFTER INSERT
ON public.work_processes
FOR EACH ROW
EXECUTE PROCEDURE public.notify_work_processes_insertion();
EXECUTE FUNCTION public.notify_work_processes_insertion();


GRANT EXECUTE ON FUNCTION public.getWorkProcessActionData(work_process_id BIGINT) TO role_admin, role_application, role_postgraphile;

0 comments on commit d566fae

Please sign in to comment.