vd/database/migrations/functions.pgsql
2019-01-10 15:51:08 +08:00

91 lines
3.1 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;
CREATE SEQUENCE "order_cards_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 2147483647
START 1
CACHE 1;
CREATE TABLE "order_cards" (
"id" int4 NOT NULL DEFAULT nextval('order_cards_id_seq'::regclass),
"type" int2 NOT NULL DEFAULT 0,
"sim" int8 NOT NULL DEFAULT '0'::bigint,
"order_id" int4 NOT NULL DEFAULT 0,
"company_id" int4 NOT NULL DEFAULT 0,
"package_id" int4 NOT NULL DEFAULT 0,
"counts" int4 NOT NULL DEFAULT 1,
"created_at" timestamp(0),
"updated_at" timestamp(0),
"deleted_at" timestamp(0),
"service_start_at" timestamp(0),
"service_end_at" timestamp(0),
CONSTRAINT "order_cards_pkey" PRIMARY KEY ("id", "type")
) PARTITION BY LIST (type);
;
CREATE UNIQUE INDEX "virtual_order_cards_order_id_sim_deleted_at_unique" ON "virtual_order_cards" USING btree (
"order_id" "pg_catalog"."int4_ops" ASC NULLS LAST,
"sim" "pg_catalog"."int8_ops" ASC NULLS LAST,
COALESCE(deleted_at, '1970-01-01 08:00:00'::timestamp without time zone) "pg_catalog"."timestamp_ops" ASC NULLS LAST
);
COMMENT ON COLUMN "order_cards"."id" IS '关联表ID';
COMMENT ON COLUMN "order_cards"."sim" IS 'SIM卡号';
COMMENT ON COLUMN "order_cards"."order_id" IS '订单ID';
COMMENT ON COLUMN "order_cards"."company_id" IS '企业ID';
COMMENT ON COLUMN "order_cards"."package_id" IS '套餐ID';
COMMENT ON COLUMN "order_cards"."counts" IS '数量';
COMMENT ON TABLE "order_cards" IS 'VD卡关联基础套餐订单';
CREATE TABLE virtual_order_cards PARTITION OF order_cards FOR VALUES IN (0);
CREATE TABLE virtual_order_renewal_cards PARTITION OF order_cards FOR VALUES IN (1);
CREATE TABLE virtual_order_renewal_package_cards PARTITION OF order_cards FOR VALUES IN (2);
CREATE TABLE virtual_order_flows_package_cards PARTITION OF order_cards FOR VALUES IN (3);