-- Отдельная таблица записей об остатках (создаётся при каждом выполнении и переносе)
CREATE TABLE shopping_volume_records (
    id SERIAL PRIMARY KEY,
    item_id INTEGER NOT NULL REFERENCES shopping_items(id) ON DELETE CASCADE,
    user_id INTEGER NOT NULL REFERENCES users(id),
    action_type VARCHAR(20) NOT NULL,
    volume_remaining NUMERIC(10,4),
    volume_purchased NUMERIC(10,4),
    daily_consumption NUMERIC(10,4),
    created_at TIMESTAMP NOT NULL DEFAULT NOW()
);

CREATE INDEX idx_shopping_volume_records_item_id ON shopping_volume_records(item_id);

-- Создаём начальные записи для всех существующих товаров (остаток 0, дата = created_at)
INSERT INTO shopping_volume_records (item_id, user_id, action_type, volume_remaining, volume_purchased, created_at)
SELECT id, user_id, 'create', 0, 0, created_at
FROM shopping_items
WHERE deleted = FALSE;
