CREATE TYPE cart_types AS ENUM (
    'default',
    'swap',
    'draft_order',
    'payment_link',
    'claim'
    );

CREATE TABLE carts
(
    id                    uuid                                                   NOT NULL,
    email                 character varying,
    billing_address_id    uuid,
    shipping_address_id   uuid,
    region_id             uuid                                                   NOT NULL,
    customer_id           uuid,
    payment_id            uuid,
    type                  cart_types               DEFAULT 'default'::cart_types NOT NULL,
    completed_at          timestamp with time zone,
    created_at            timestamp with time zone DEFAULT now()                 NOT NULL,
    updated_at            timestamp with time zone DEFAULT now()                 NOT NULL,
    deleted_at            timestamp with time zone,
    metadata              jsonb,
    idempotency_key       character varying,
    context               jsonb,
    payment_authorized_at timestamp with time zone,
    sales_channel_id      uuid
);

CREATE TABLE cart_discounts
(
    cart_id     uuid NOT NULL,
    discount_id uuid NOT NULL
);

CREATE TABLE cart_gift_cards
(
    cart_id      uuid NOT NULL,
    gift_card_id uuid NOT NULL
);
