blob: 240eff383e8dfe8caa2d9e1660e3adf93e06372a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
CREATE OR REPLACE FUNCTION lint_summarizer(
) RETURNS TRIGGER
AS $$
DECLARE
t_noOfCerts lint_summary.NO_OF_CERTS%TYPE;
BEGIN
IF TG_OP = 'INSERT' THEN
INSERT INTO lint_summary (
LINT_ISSUE_ID, ISSUER_CA_ID, NOT_BEFORE_DATE, NO_OF_CERTS
)
VALUES (
new.LINT_ISSUE_ID, new.ISSUER_CA_ID, new.NOT_BEFORE_DATE, 1
)
ON CONFLICT (LINT_ISSUE_ID, ISSUER_CA_ID, NOT_BEFORE_DATE) DO UPDATE
SET NO_OF_CERTS = lint_summary.NO_OF_CERTS + 1;
RETURN NEW;
ELSIF TG_OP = 'DELETE' THEN
UPDATE lint_summary
SET NO_OF_CERTS = NO_OF_CERTS - 1
WHERE LINT_ISSUE_ID = old.LINT_ISSUE_ID
AND ISSUER_CA_ID = old.ISSUER_CA_ID
AND NOT_BEFORE_DATE = old.NOT_BEFORE_DATE
RETURNING NO_OF_CERTS
INTO t_noOfCerts;
IF FOUND AND (t_noOfCerts = 0) THEN
DELETE FROM lint_summary
WHERE LINT_ISSUE_ID = old.LINT_ISSUE_ID
AND ISSUER_CA_ID = old.ISSUER_CA_ID
AND NOT_BEFORE_DATE = old.NOT_BEFORE_DATE
AND NO_OF_CERTS = 0;
END IF;
RETURN OLD;
END IF;
END;
$$ LANGUAGE plpgsql STRICT;
|