CREATE TABLE customer_points (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    customer_id UUID NOT NULL,
    balance BIGINT DEFAULT 0 NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    
    CONSTRAINT fk_customer_points_customer
        FOREIGN KEY (customer_id)
        REFERENCES customers(id)
        ON DELETE CASCADE,
    
    CONSTRAINT chk_customer_points_balance_non_negative
        CHECK (balance >= 0)
);

-- Create indexes
CREATE INDEX idx_customer_points_customer_id ON customer_points(customer_id);
CREATE INDEX idx_customer_points_updated_at ON customer_points(updated_at);

-- Create unique constraint to ensure one point record per customer
CREATE UNIQUE INDEX idx_customer_points_unique_customer ON customer_points(customer_id);
