From 1a838c115140bdf0f35054351153fb21f2a228da Mon Sep 17 00:00:00 2001 From: Masaya Tojo Date: Sun, 12 Mar 2023 16:23:41 +0900 Subject: Add function to create new transaction. --- deploy/insert_transaction.sql | 24 ++++++++++++++++++++++++ revert/insert_transaction.sql | 7 +++++++ sqitch.plan | 1 + verify/insert_transaction.sql | 26 ++++++++++++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 deploy/insert_transaction.sql create mode 100644 revert/insert_transaction.sql create mode 100644 verify/insert_transaction.sql diff --git a/deploy/insert_transaction.sql b/deploy/insert_transaction.sql new file mode 100644 index 0000000..eb5a38e --- /dev/null +++ b/deploy/insert_transaction.sql @@ -0,0 +1,24 @@ +-- Deploy kakeibo:insert_transaction to pg +-- requires: schema +-- requires: transactions + +BEGIN; + +CREATE OR REPLACE FUNCTION kakeibo.insert_transaction( + p_type_code INTEGER, + p_date DATE, + p_note TEXT +) RETURNS INTEGER AS $$ + DECLARE + inserted_id INTEGER; + BEGIN + INSERT INTO kakeibo.transactions ( + type_code, date, note + ) VALUES ( + p_type_code, p_date, p_note + ) RETURNING id INTO inserted_id; + RETURN inserted_id; + END; +$$ LANGUAGE plpgsql SECURITY DEFINER; + +COMMIT; diff --git a/revert/insert_transaction.sql b/revert/insert_transaction.sql new file mode 100644 index 0000000..d579ca6 --- /dev/null +++ b/revert/insert_transaction.sql @@ -0,0 +1,7 @@ +-- Revert kakeibo:insert_transaction from pg + +BEGIN; + +DROP FUNCTION kakeibo.insert_transaction; + +COMMIT; diff --git a/sqitch.plan b/sqitch.plan index 5cf4710..6e2ba7b 100644 --- a/sqitch.plan +++ b/sqitch.plan @@ -5,3 +5,4 @@ schema 2023-03-11T15:56:41Z Masaya Tojo # Add schema for use in kakeibo. transactions [schema] 2023-03-11T16:50:25Z Masaya Tojo # Add table for tracking transactions. items [schema transactions] 2023-03-12T04:48:30Z Masaya Tojo # Add table for tracking items. +insert_transaction [schema transactions] 2023-03-12T07:06:15Z Masaya Tojo # Add function to create new transaction. diff --git a/verify/insert_transaction.sql b/verify/insert_transaction.sql new file mode 100644 index 0000000..7f6893c --- /dev/null +++ b/verify/insert_transaction.sql @@ -0,0 +1,26 @@ +-- Verify kakeibo:insert_transaction on pg + +BEGIN; + +SELECT has_function_privilege('kakeibo.insert_transaction(INTEGER, DATE, TEXT)', 'EXECUTE'); + +SET search_path = kakeibo; + +DO $$ + DECLARE + v_id INTEGER; + BEGIN + SELECT insert_transaction(0, '2023-03-15', 'テスト') INTO v_id; + PERFORM * + FROM transactions + WHERE id = v_id + AND type_code = 0 + AND date = '2023-03-15' + AND note = 'テスト'; + IF NOT FOUND THEN + RAISE EXCEPTION 'Inserted data is not found.'; + END IF; + END +$$; + +ROLLBACK; -- cgit v1.2.3