42 lines
1,002 B
MySQL
42 lines
1,002 B
MySQL
|
--
|
||
|
-- 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;
|