Emmanuel BENOîT
bca6b99068
Due to an error on a column name, finish_task() was broken. It has been fixed.
41 lines
1,002 B
PL/PgSQL
41 lines
1,002 B
PL/PgSQL
--
|
|
-- Upgrade the database from commit ID 205130326245fa8175bc390ce58b387b92d568a7
|
|
--
|
|
-- Run this from the top-level directory
|
|
--
|
|
|
|
|
|
\i database/config.sql
|
|
\c :db_name
|
|
|
|
BEGIN;
|
|
DROP FUNCTION finish_task( INT , INT , TEXT );
|
|
CREATE FUNCTION finish_task( t_id INT , u_id INT , n_text TEXT )
|
|
RETURNS INT
|
|
STRICT VOLATILE
|
|
SECURITY INVOKER
|
|
AS $finish_task$
|
|
BEGIN
|
|
PERFORM 1 FROM tasks_single_view t
|
|
WHERE id = t_id AND badness = 0;
|
|
IF NOT FOUND THEN
|
|
RETURN 2;
|
|
END IF;
|
|
|
|
BEGIN
|
|
INSERT INTO completed_tasks ( task_id , user_id )
|
|
VALUES ( t_id , u_id );
|
|
EXCEPTION
|
|
WHEN unique_violation THEN
|
|
RETURN 1;
|
|
END;
|
|
|
|
UPDATE tasks SET user_id_assigned = NULL WHERE task_id = t_id;
|
|
INSERT INTO notes ( task_id , user_id , note_text )
|
|
VALUES ( t_id , u_id , n_text );
|
|
RETURN 0;
|
|
END;
|
|
$finish_task$ LANGUAGE plpgsql;
|
|
REVOKE EXECUTE ON FUNCTION finish_task( INT , INT , TEXT ) FROM PUBLIC;
|
|
GRANT EXECUTE ON FUNCTION finish_task( INT , INT , TEXT ) TO :webapp_user;
|
|
COMMIT;
|