DROP TABLE IF EXISTS sales; CREATE TABLE sales ( id SERIAL PRIMARY KEY, -- Auto-incremented unique ID sale_id TEXT NOT NULL UNIQUE, -- Sale ID used for tracking name TEXT NOT NULL, -- Name for admin visual purposes start_time TIMESTAMP WITHOUT TIME ZONE NOT NULL, -- Start time that is non timezone specific end_time TIMESTAMP WITHOUT TIME ZONE NOT NULL, -- End time that is non timezone specific active BOOLEAN NOT NULL DEFAULT TRUE, -- Boolean flag to indicate if the sale is active discount_percent INT CHECK (discount_percent BETWEEN 1 AND 40), -- Discount percentage (1-40) segmentation JSONB NOT NULL DEFAULT '{ "include_markets": [], "exclude_markets": [], "designers": [], "product_types": [], "products": []}'::jsonb -- JSON object for segmentation settings );