Update analytic to support new categories change
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
DROP TRIGGER IF EXISTS trigger_validate_expense_item_expense_category ON expense_items;
|
||||
DROP FUNCTION IF EXISTS validate_expense_item_expense_category();
|
||||
|
||||
ALTER TABLE expense_items
|
||||
ALTER COLUMN purchase_category_id DROP NOT NULL;
|
||||
@@ -0,0 +1,38 @@
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM expense_items ei
|
||||
LEFT JOIN purchase_categories pc ON pc.id = ei.purchase_category_id
|
||||
WHERE ei.purchase_category_id IS NULL
|
||||
OR pc.id IS NULL
|
||||
OR pc.type <> 'expense'
|
||||
) THEN
|
||||
RAISE EXCEPTION 'expense_items contains missing or non-expense purchase categories. Assign valid expense categories before running this migration.';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
ALTER TABLE expense_items
|
||||
ALTER COLUMN purchase_category_id SET NOT NULL;
|
||||
|
||||
CREATE OR REPLACE FUNCTION validate_expense_item_expense_category()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM purchase_categories pc
|
||||
WHERE pc.id = NEW.purchase_category_id
|
||||
AND pc.type = 'expense'
|
||||
) THEN
|
||||
RAISE EXCEPTION 'expense_items.purchase_category_id must reference an expense purchase category';
|
||||
END IF;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
DROP TRIGGER IF EXISTS trigger_validate_expense_item_expense_category ON expense_items;
|
||||
CREATE TRIGGER trigger_validate_expense_item_expense_category
|
||||
BEFORE INSERT OR UPDATE OF purchase_category_id ON expense_items
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION validate_expense_item_expense_category();
|
||||
Reference in New Issue
Block a user