diff options
| -rw-r--r-- | deploy/delete_item.sql | 15 | ||||
| -rw-r--r-- | revert/delete_item.sql | 7 | ||||
| -rw-r--r-- | sqitch.plan | 1 | ||||
| -rw-r--r-- | verify/delete_item.sql | 37 | 
4 files changed, 60 insertions, 0 deletions
| diff --git a/deploy/delete_item.sql b/deploy/delete_item.sql new file mode 100644 index 0000000..38b3083 --- /dev/null +++ b/deploy/delete_item.sql @@ -0,0 +1,15 @@ +-- Deploy kakeibo:delete_item to pg +-- requires: schema +-- requires: items + +BEGIN; + +CREATE OR REPLACE FUNCTION kakeibo.delete_item( +  p_item_id INTEGER +) RETURNS VOID AS $$ +  BEGIN +    DELETE FROM kakeibo.items WHERE id = p_item_id; +  END; +$$ LANGUAGE plpgsql SECURITY DEFINER; + +COMMIT; diff --git a/revert/delete_item.sql b/revert/delete_item.sql new file mode 100644 index 0000000..d5bda39 --- /dev/null +++ b/revert/delete_item.sql @@ -0,0 +1,7 @@ +-- Revert kakeibo:delete_item from pg + +BEGIN; + +DROP FUNCTION kakeibo.delete_item; + +COMMIT; diff --git a/sqitch.plan b/sqitch.plan index fd1bbb4..93b940a 100644 --- a/sqitch.plan +++ b/sqitch.plan @@ -7,3 +7,4 @@ transactions [schema] 2023-03-11T16:50:25Z Masaya Tojo <masaya@tojo.tokyo> # Add  items [schema transactions] 2023-03-12T04:48:30Z Masaya Tojo <masaya@tojo.tokyo> # Add table for tracking items.  insert_transaction [schema transactions] 2023-03-12T07:06:15Z Masaya Tojo <masaya@tojo.tokyo> # Add function to create new transaction.  insert_item [schema items] 2023-03-12T07:25:23Z Masaya Tojo <masaya@tojo.tokyo> # Add function to add new item. +delete_item [schema items] 2023-03-12T08:14:34Z Masaya Tojo <masaya@tojo.tokyo> # Add function to delete item. diff --git a/verify/delete_item.sql b/verify/delete_item.sql new file mode 100644 index 0000000..b1c3dd7 --- /dev/null +++ b/verify/delete_item.sql @@ -0,0 +1,37 @@ +-- Verify kakeibo:delete_item on pg + +BEGIN; + +SELECT has_function_privilege('kakeibo.delete_item(INTEGER)', 'EXECUTE'); + +SET search_path = kakeibo; + +DO $$ +  DECLARE +    v_transaction_id INTEGER; +    v_item_id INTEGER; +    v_item_id_2 INTEGER; +  BEGIN +    SELECT insert_transaction(0, '2023-03-15', 'テスト') INTO v_transaction_id; +    SELECT insert_item(v_transaction_id, 'カテ', 'サブカテ', 298, 'メモ') INTO v_item_id; +    SELECT insert_item(v_transaction_id, 'カテ', 'サブカテ', 298, 'メモ') INTO v_item_id_2; + +    PERFORM * FROM items WHERE id = v_item_id; +    IF NOT FOUND THEN +      RAISE EXCEPTION 'Inserted data is not found.'; +    END IF; + +    PERFORM delete_item(v_item_id); +    PERFORM * FROM items WHERE id = v_item_id; +    IF FOUND THEN +      RAISE EXCEPTION 'Deleted data still exists.'; +    END IF; + +    PERFORM * FROM items WHERE id = v_item_id_2; +    IF NOT FOUND THEN +      RAISE EXCEPTION 'Unexpected delete data.'; +    END IF; +  END +$$; + +ROLLBACK; | 
