-- ===========================================================================
-- Migration: Alter supplier_recipe — add labor parameters
-- Date: 2026-05-05
-- Context: Recipe Calculator — Tile 3 (Labor)
-- ===========================================================================
-- Decyzja projektowa:
--   Labor jest 1:1 z recepturą (dwa skalary), nie wymaga osobnej tabeli.
--   Wartości są opcjonalne — receptura może istnieć bez parametrów pracy.
--
--   labor_time_per_unit_min:  ilość minut pracy potrzebna na 1 jednostkę
--                             receptury (kg, l, szt — zgodnie z jednostką sales unit
--                             ustaloną w przyszłej iteracji).
--   labor_hourly_rate:        koszt 1 godziny pracy w walucie dostawcy.
--
--   labor_cost_per_unit liczone w warstwie API jako:
--       (labor_time_per_unit_min / 60) * labor_hourly_rate
--   Pole nie jest persystowane — zawsze obliczane "on read" z dwóch surowych wartości.
-- ===========================================================================

-- Idempotentne dodanie kolumn
SET @col_exists := (
    SELECT COUNT(*) FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = DATABASE()
      AND TABLE_NAME   = 'supplier_recipe'
      AND COLUMN_NAME  = 'labor_time_per_unit_min'
);
SET @sql := IF(@col_exists = 0,
    'ALTER TABLE `supplier_recipe`
        ADD COLUMN `labor_time_per_unit_min` DECIMAL(7,2) NULL DEFAULT NULL
            COMMENT ''Czas pracy w minutach na 1 jednostkę receptury''
            AFTER `technical_notes`',
    'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;

SET @col_exists := (
    SELECT COUNT(*) FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = DATABASE()
      AND TABLE_NAME   = 'supplier_recipe'
      AND COLUMN_NAME  = 'labor_hourly_rate'
);
SET @sql := IF(@col_exists = 0,
    'ALTER TABLE `supplier_recipe`
        ADD COLUMN `labor_hourly_rate` DECIMAL(10,2) NULL DEFAULT NULL
            COMMENT ''Stawka godzinowa pracy (waluta dostawcy)''
            AFTER `labor_time_per_unit_min`',
    'SELECT 1');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
