-- =====================================================
-- SCRIPT 02: Extend Machines Table for PC Data
-- =====================================================
-- Date: 2025-11-06
-- Purpose: Add PC-related columns to machines table
-- Status: REVERSIBLE (see ROLLBACK_02)
-- Estimated Time: 2-3 minutes
-- NOTE: Warranty data goes to separate warranties table (script 04)
-- =====================================================

USE shopdb;
SET SQL_SAFE_UPDATES = 0;

-- =====================================================
-- STEP 1: Add PC-specific fields
-- =====================================================

-- Check current structure
SELECT 'Current machines table structure:' AS info;
SHOW COLUMNS FROM machines;

-- Add PC-specific fields
ALTER TABLE machines
ADD COLUMN hostname VARCHAR(100) AFTER machinenumber,
ADD COLUMN loggedinuser VARCHAR(100) AFTER hostname,
ADD COLUMN serialnumber VARCHAR(100) AFTER modelnumberid;

-- Add OS and status fields
ALTER TABLE machines
ADD COLUMN osid INT(11) AFTER serialnumber,
ADD COLUMN machinestatusid INT(11) AFTER osid,
ADD COLUMN pctypeid INT(11) AFTER machinetypeid;

-- Add controller fields (for CNCs)
ALTER TABLE machines
ADD COLUMN controllertypeid INT(11) AFTER modelnumberid,
ADD COLUMN controllerosid INT(11) AFTER controllertypeid;

-- =====================================================
-- STEP 2: Add configuration flags
-- =====================================================

ALTER TABLE machines
ADD COLUMN requires_manual_machine_config TINYINT(1) DEFAULT 0 AFTER islocationonly;

-- =====================================================
-- STEP 3: Add audit fields
-- =====================================================

ALTER TABLE machines
ADD COLUMN lastupdated DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER requires_manual_machine_config,
ADD COLUMN dateadded DATETIME DEFAULT CURRENT_TIMESTAMP AFTER lastupdated;

-- =====================================================
-- STEP 4: Create indexes
-- =====================================================

CREATE INDEX idx_machines_hostname ON machines(hostname);
CREATE INDEX idx_machines_serialnumber ON machines(serialnumber);
CREATE INDEX idx_machines_pctypeid ON machines(pctypeid);
CREATE INDEX idx_machines_osid ON machines(osid);
CREATE INDEX idx_machines_machinestatusid ON machines(machinestatusid);
CREATE INDEX idx_machines_lastupdated ON machines(lastupdated);
CREATE INDEX idx_machines_controllertypeid ON machines(controllertypeid);
CREATE INDEX idx_machines_controllerosid ON machines(controllerosid);

-- =====================================================
-- STEP 5: Add foreign keys (will be created after related tables exist)
-- =====================================================

-- NOTE: FK constraints will be added after:
-- - Script 03 creates PC machine types
-- - Script 07 renames pcstatus to machinestatus
-- These will be added in a later script to avoid errors

-- =====================================================
-- VERIFICATION
-- =====================================================

SELECT '✓ Machines table extended with PC fields' AS status;
DESCRIBE machines;

SELECT 'New column count:' AS info, COUNT(*) AS column_count
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'shopdb' AND TABLE_NAME = 'machines';

SELECT '✓ Script 02 completed successfully' AS status;

SET SQL_SAFE_UPDATES = 1;

-- =====================================================
-- NOTES
-- =====================================================
-- Next: Run script 03_create_pc_machine_types.sql
-- Rollback: Run ROLLBACK_02_machines_table_extensions.sql
-- =====================================================
