-- Directive Order Groups (DOGs): Epic-like groupings of orders within a directive.
CREATE TABLE directive_order_groups (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    directive_id UUID NOT NULL REFERENCES directives(id) ON DELETE CASCADE,
    owner_id UUID NOT NULL REFERENCES owners(id) ON DELETE CASCADE,
    name VARCHAR(500) NOT NULL,
    description TEXT,
    status VARCHAR(32) NOT NULL DEFAULT 'open'
        CHECK (status IN ('open', 'in_progress', 'done', 'archived')),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE INDEX IF NOT EXISTS idx_dog_directive_id ON directive_order_groups(directive_id);
CREATE INDEX IF NOT EXISTS idx_dog_owner_id ON directive_order_groups(owner_id);

-- Add optional dog_id to orders
ALTER TABLE orders ADD COLUMN dog_id UUID REFERENCES directive_order_groups(id) ON DELETE SET NULL;
CREATE INDEX IF NOT EXISTS idx_orders_dog_id ON orders(dog_id);
