Remove deductions that violate tax rules
This policy applies when a query derives Expenses from
Receipts. Meal expenses with business use above 50 percent fail the
constraint and are removed from the insert.
import duckdb
from data_flow_control import Policy, dfc
raw = duckdb.connect()
conn = dfc(raw)
conn.execute("CREATE TABLE Receipts (id INTEGER, biz_use INTEGER, cat VARCHAR)")
conn.execute("CREATE TABLE Expenses (id INTEGER, biz_use INTEGER, cat VARCHAR)")
conn.execute("""
INSERT INTO Receipts VALUES
(1, 80, 'Meal'),
(2, 30, 'Meal'),
(3, 80, 'Travel')
""")
conn.register_policy(
Policy.from_pgn("""
SOURCE Receipts SINK Expenses
CONSTRAINT Expenses.biz_use <= 50 OR Receipts.cat != 'Meal'
ON FAIL REMOVE
""")
)
conn.execute("""
INSERT INTO Expenses (id, biz_use, cat)
SELECT Receipts.id, Receipts.biz_use, Receipts.cat
FROM Receipts
""")
rows = conn.fetchall("SELECT id, biz_use, cat FROM Expenses ORDER BY id")
assert rows == [(2, 30, "Meal"), (3, 80, "Travel")]