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)
);

CREATE TABLE IF NOT EXISTS basket.basket_item
(
    id uuid NOT NULL DEFAULT gen_random_uuid(),
    basket_id uuid NOT NULL,
    product_id integer 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)
);

ALTER TABLE IF EXISTS basket.basket_item
    ADD 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
    OWNER to postgres;

ALTER TABLE IF EXISTS basket.basket_item
    OWNER to postgres;
-- TODO ^^ PRIVILEGES...