vd/database/migrations/functions.pgsql
2019-01-10 10:47:36 +08:00

41 lines
1.4 KiB
PL/PgSQL

CREATE OR REPLACE FUNCTION card_timelines ()
RETURNS TRIGGER
AS $$
DECLARE
temp RECORD;
srow RECORD;
BEGIN
IF (TG_OP = 'INSERT') THEN
IF NEW.virtual_activated_at IS NOT NULL THEN
RAISE NOTICE 'row % inserted', NEW.sim;
SELECT
virtual_order_cards.order_id
virtual_order_cards.created_at,
virtual_packages.service_months,
virtual_packages.name AS package_name INTO srow
FROM
virtual_order_cards
JOIN virtual_packages ON virtual_order_cards.package_id = virtual_packages.id
WHERE
sim = NEW.sim;
IF FOUND THEN
INSERT INTO timelines (sim, package_type, package_name, starttime, endtime)
VALUES (NEW.sim, 0, srow.package_name, NEW.virtual_activated_at, NEW.virtual_activated_at + (srow.service_months || ' month')::interval);
END IF;
END IF;
ELSIF (TG_OP = 'UPDATE') THEN
IF OLD.virtual_activated_at IS NOT NULL OR NEW.virtual_activated_at IS NOT NULL THEN
IF NEW.virtual_activated_at IS NULL THEN
RAISE NOTICE 'NEW virtual_activated_at IS NULL';
ELSE
RAISE NOTICE 'NEW virtual_activated_at IS NOT NULL';
END IF;
END IF;
ELSIF (TG_OP = 'DELETE') THEN
END IF;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;