Add ctime/mtime to payment_variant

This commit is contained in:
2023-07-18 16:47:05 +02:00
parent 7e6e0c0fca
commit d5bacb65ea
3 changed files with 75 additions and 2 deletions

View File

@ -612,6 +612,7 @@ CREATE TABLE payment_variant (
name TEXT NOT NULL,
date TEXT NOT NULL CHECK (date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$') DEFAULT CURRENT_DATE,
test_variant INTEGER NOT NULL CHECK (test_variant IN (TRUE, FALSE)),
calc_time INTEGER,
bucket_1_name TEXT DEFAULT NULL,
bucket_2_name TEXT DEFAULT NULL,
@ -625,6 +626,8 @@ CREATE TABLE payment_variant (
comment TEXT DEFAULT NULL,
data TEXT NOT NULL,
ctime INTEGER NOT NULL DEFAULT (UNIXEPOCH()),
mtime INTEGER NOT NULL DEFAULT (UNIXEPOCH()),
CONSTRAINT pk_payment PRIMARY KEY (year, avnr)
) STRICT;

View File

@ -234,3 +234,73 @@ CREATE TRIGGER t_delivery_part_modifier_d_mtime_delivery_part
BEGIN
UPDATE delivery_part SET mtime = UNIXEPOCH() WHERE (year, did, dpnr) = (OLD.year, OLD.did, OLD.dpnr);
END;
----------------------------------------------------------------
CREATE TRIGGER t_payment_variant_i_ctime
AFTER INSERT ON payment_variant FOR EACH ROW
WHEN NEW.ctime != UNIXEPOCH()
BEGIN
UPDATE payment_variant SET ctime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
END;
CREATE TRIGGER t_payment_variant_u_ctime
BEFORE UPDATE ON payment_variant FOR EACH ROW
WHEN OLD.ctime != NEW.ctime
BEGIN
SELECT RAISE(ABORT, 'It is not allowed to change ctime');
END;
CREATE TRIGGER t_payment_variant_i_mtime
AFTER INSERT ON payment_variant FOR EACH ROW
WHEN NEW.mtime != UNIXEPOCH()
BEGIN
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
END;
CREATE TRIGGER t_payment_variant_u_mtime
AFTER UPDATE ON payment_variant FOR EACH ROW
WHEN NEW.mtime != UNIXEPOCH()
BEGIN
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
END;
----------------------------------------------------------------
CREATE TRIGGER t_payment_delivery_i_mtime_payment_variant
AFTER INSERT ON payment_delivery FOR EACH ROW
BEGIN
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
END;
CREATE TRIGGER t_payment_delivery_u_mtime_payment_variant
AFTER UPDATE ON payment_delivery FOR EACH ROW
BEGIN
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr) OR (year, avnr) = (NEW.year, NEW.avnr);
END;
CREATE TRIGGER t_payment_delivery_d_mtime_payment_variant
AFTER DELETE ON payment_delivery FOR EACH ROW
BEGIN
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr);
END;
----------------------------------------------------------------
CREATE TRIGGER t_payment_member_i_mtime_payment_variant
AFTER INSERT ON payment_member FOR EACH ROW
BEGIN
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (NEW.year, NEW.avnr);
END;
CREATE TRIGGER t_payment_member_u_mtime_payment_variant
AFTER UPDATE ON payment_member FOR EACH ROW
BEGIN
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr) OR (year, avnr) = (NEW.year, NEW.avnr);
END;
CREATE TRIGGER t_payment_member_d_mtime_payment_variant
AFTER DELETE ON payment_member FOR EACH ROW
BEGIN
UPDATE payment_variant SET mtime = UNIXEPOCH() WHERE (year, avnr) = (OLD.year, OLD.avnr);
END;