-- ===========================================================================
-- Migration: Create supplier_raw_material_allergen
-- Date: 2026-05-05
-- Context: Recipe Calculator — Raw Materials module (v1)
-- ===========================================================================
-- Tabela pivot: przypisanie alergenów do surowców dostawcy.
-- Referencjonuje istniejącą tabelę `allergen` (id, code).
--
-- Uwaga dot. schematu allergen:
--   Tabela `allergen` zawiera tylko: id INT(11), code VARCHAR(50).
--   Nie ma pola `name`. Alergen jest identyfikowany przez code (np. GL, LK).
--   API zwracające alergeny surowca będzie zwracać: { id, code }.
--
-- Wzorzec: analogia do supplier_catalog_product_allergen
--   (product_id + allergen_id jako composite PK bez osobnego id).
--   W tej tabeli dodajemy własny `id` i `created_at` dla spójności
--   z nowym stylem migracji (patrz: 2026_04_29_create_case_request.sql).
-- ===========================================================================

CREATE TABLE IF NOT EXISTS `supplier_raw_material_allergen` (
    `id`                INT UNSIGNED    NOT NULL AUTO_INCREMENT,
    `raw_material_id`   INT UNSIGNED    NOT NULL COMMENT 'FK → supplier_raw_material.id',
    `allergen_id`       INT(11)         NOT NULL COMMENT 'FK → allergen.id',
    `created_at`        DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,

    PRIMARY KEY (`id`),

    -- Unikalność: jeden alergen przypisany do surowca tylko raz
    UNIQUE KEY `uq_srma_raw_material_allergen` (`raw_material_id`, `allergen_id`),

    -- Indeks na allergen_id — odwrotne wyszukiwanie (np. "surowce z glutenem")
    KEY `idx_srma_allergen` (`allergen_id`),

    CONSTRAINT `fk_srma_raw_material`
        FOREIGN KEY (`raw_material_id`) REFERENCES `supplier_raw_material` (`id`)
        ON DELETE CASCADE,

    CONSTRAINT `fk_srma_allergen`
        FOREIGN KEY (`allergen_id`) REFERENCES `allergen` (`id`)
        ON DELETE CASCADE

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

