52 lines
1.5 KiB
PL/PgSQL
52 lines
1.5 KiB
PL/PgSQL
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
|
|
|
|
CREATE SCHEMA "basket" AUTHORIZATION egommerce;
|
|
|
|
CREATE TABLE IF NOT EXISTS basket.basket
|
|
(
|
|
id uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
"state" character varying NOT NULL DEFAULT 'new',
|
|
created_at timestamp without time zone NOT NULL DEFAULT now(),
|
|
updated_at timestamp without time zone,
|
|
PRIMARY KEY (id)
|
|
);
|
|
|
|
ALTER TABLE IF EXISTS basket.basket OWNER to egommerce;
|
|
|
|
CREATE TABLE IF NOT EXISTS basket.basket_item
|
|
(
|
|
id uuid NOT NULL DEFAULT gen_random_uuid(),
|
|
basket_id uuid NOT NULL,
|
|
product_id uuid NOT NULL,
|
|
quantity integer NOT NULL DEFAULT 1,
|
|
price double precision NOT NULL DEFAULT 0.00,
|
|
created_at timestamp without time zone NOT NULL DEFAULT now(),
|
|
updated_at timestamp without time zone,
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT basket_item_basket_fkey FOREIGN KEY (basket_id)
|
|
REFERENCES basket.basket (id) MATCH SIMPLE
|
|
ON UPDATE NO ACTION
|
|
ON DELETE NO ACTION
|
|
NOT VALID
|
|
);
|
|
|
|
ALTER TABLE IF EXISTS basket.basket_item OWNER to egommerce;
|
|
|
|
CREATE FUNCTION basket.update_basket_timestamp()
|
|
RETURNS trigger
|
|
LANGUAGE 'plpgsql'
|
|
VOLATILE
|
|
AS $BODY$
|
|
BEGIN
|
|
UPDATE basket.basket SET updated_at = NOW() WHERE id = NEW.basket_id;
|
|
RETURN NEW;
|
|
END;
|
|
$BODY$;
|
|
|
|
ALTER FUNCTION basket.update_basket_timestamp() OWNER TO egommerce;
|
|
|
|
CREATE TRIGGER trigger_update_basket_timestamp
|
|
AFTER INSERT OR UPDATE OR DELETE ON basket.basket_item
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION basket.update_basket_timestamp();
|