-- ===========================================================================
-- Migration: Create supplier_recipe
-- Date: 2026-05-05
-- Context: Recipe Calculator module (v1)
-- ===========================================================================
-- Receptury dostawcy. Każdy rekord jest własnością konkretnego dostawcy.
-- Receptura może być opcjonalnie powiązana z produktem z katalogu dostawcy.
-- Izolacja gwarantowana przez supplier_id w każdym zapytaniu.
--
-- Kluczowe decyzje projektowe:
--
--   product_id (nullable FK):
--     Receptura może istnieć bez powiązanego produktu (np. w trakcie
--     tworzenia). Powiązanie z produktem katalogu dostawcy jest opcjonalne.
--
--   is_archived (soft delete):
--     Zarchiwizowana receptura nie jest widoczna na liście aktywnych.
--     Twardego usunięcia nie przewidujemy w v1.
--
-- ===========================================================================

CREATE TABLE IF NOT EXISTS `supplier_recipe` (
    `id`                    INT UNSIGNED    NOT NULL AUTO_INCREMENT,
    `supplier_id`           INT(11)         NOT NULL COMMENT 'FK → material_supplier.id — izolacja per dostawca',
    `product_id`            INT UNSIGNED    NULL     COMMENT 'FK → supplier_catalog_product.id (opcjonalne powiązanie z produktem)',
    `name`                  VARCHAR(255)    NOT NULL COMMENT 'Nazwa receptury',
    `technical_notes`       TEXT            NULL     COMMENT 'Notatki technologiczne / komentarze procesowe',
    `is_archived`           TINYINT(1)      NOT NULL DEFAULT 0 COMMENT '0 = aktywna, 1 = zarchiwizowana',
    `created_at`            DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `updated_at`            DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    PRIMARY KEY (`id`),

    KEY `idx_sr_supplier`          (`supplier_id`),
    KEY `idx_sr_supplier_archived` (`supplier_id`, `is_archived`),
    KEY `idx_sr_product`           (`product_id`),

    CONSTRAINT `fk_sr_supplier`
        FOREIGN KEY (`supplier_id`) REFERENCES `material_supplier` (`id`)
        ON DELETE CASCADE
        ON UPDATE CASCADE,

    CONSTRAINT `fk_sr_product`
        FOREIGN KEY (`product_id`) REFERENCES `supplier_catalog_product` (`id`)
        ON DELETE SET NULL
        ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
