aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasaya Tojo <masaya@tojo.tokyo>2023-03-12 17:36:46 +0900
committerMasaya Tojo <masaya@tojo.tokyo>2023-03-12 23:38:12 +0900
commitbaaa9bb106af01c0d6d5fd9cde87a27852bb8622 (patch)
tree71e4367513b3567d5d01d5b74f96c5e663965ebf
parent40c84f86e9d7326bb0020c9210e0689179b1102c (diff)
Add function to delete item.
-rw-r--r--deploy/delete_item.sql15
-rw-r--r--revert/delete_item.sql7
-rw-r--r--sqitch.plan1
-rw-r--r--verify/delete_item.sql37
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;